Синхронизировать функцию с двумя разными файлами из разных папок в bash

#bash #shell #loops #for-loop

#bash #оболочка #циклы #цикл for

Вопрос:

Я пытаюсь синхронизировать функцию с двумя массивами файлов. Это то, что я сделал:

 path_c=/dir1/*fa 
path_b=/dir2/*rem

for i in 1 2 3 4; do echo ${path_c[$i]} ${path_b[$i]};  done
  

У меня есть 4 файла в каталоге 1 и 4 файла в каталоге 2. Файлы имеют одинаковое имя, но разный формат

У кого-нибудь есть хорошее решение для этой проблемы?

Заранее благодарю вас

Пример: у меня есть следующие файлы

 dir1/dog.fa 
dir1/cat.fa
dir2/dog.rem
dir2/cat.rem
  

Предполагается, что они должны работать одновременно с функцией macrame

 macrame -a dir1/dog.fa -b dir2/dog.rem
macrame -a dir1/cat.fa -b dir2/cat.rem
  

Я пытаюсь выполнить цикл, потому что у меня есть сотни файлов в обоих каталогах

Комментарии:

1. Я не понимаю вашего вопроса. Чего вы хотите достичь?

2. Я обновил вопрос, надеюсь, что теперь будет понятнее.

Ответ №1:

Ни одна из переменных не является массивом.

 path_c=(/dir1/*fa)
path_b=(/dir2/*rem)
  

Однако вам, вероятно, не нужны массивы, и вы можете использовать следующее:

 for c_file in /dir1/*.fa; do
  b_file=/dir2/$(basename "$c_file" .fa).rem
  echo "$c_file" "$b_file"
done
  

Комментарии:

1. Я не могу использовать это, потому что файлы *.rem находятся в другом каталоге, и я не могу их смешать.

2. Извините, я упустил это из виду. Исправит.

3. Это сработало! И теперь я больше понимаю, как работает bash… Спасибо!