Сбой команды Bash при доступе ко всем подкаталогам

У меня есть такая структура каталогов:

example/ace/actives_final.sdf.gz
example/ace/decoys_final.sdf.gz
example/aces/actives_final.sdf.gz
example/aces/decoys_final.sdf.gz

Я хочу получить доступ только к каждому подкаталогу и распаковать файлы ... Я использовал

for D in `find . -maxdepth 1 -type d`; do gzip actives_final.sdf.gz; gzip -d decoys_final.sdf.gz; done

Также для -часть, я заменил всю часть с "за" на первую ";" с данными строками:

  • for i in ./*;
  • for i in */;

Кажется, что все эти варианты работают для первого каталога, туза.

Затем я получаю ошибки

gzip: actives_final.sdf.gz: No such file or directory; 
gzip: decoys_final.sdf.gz: No such file or directory

три раза, что подходит, так как этот каталог включает, кроме ace, два скрытых каталога и aces.

Но я проверял орфографию в каталоге aces несколько раз, и gzip должен был их найти, они такие же, как в ace.

Я новичок в bash и боюсь, что допустил очевидную ошибку ...

Редактировать: я использовал эту ограниченную структуру только в качестве теста, позже в каждом каталоге будет больше .gz, но не все из них должны быть распакованы, поэтому я должен искать полное имя. Также, если распаковка работает, я должен выполнить еще одну команду в этих подкаталогах, поэтому я должен использовать цикл for.

0
задан 27 April 2017 в 16:54

1 ответ

Вам не нужно for - цикл здесь. find должен быть достаточно:

find -name "*.gz" -exec gunzip {} \;

В этой команде, find поиски рекурсивно файлов, заканчивающихся .gz и, извлекает их использующий gunzip в их местоположении.

<час>

при необходимости в цикле можно сделать следующее:

for dir in $(find . -maxdepth 1 -type d)
do
  echo "entering $dir"
  cd "$dir"
  gunzip actives_final.sdf.gz
  gunzip decoys_final.sdf.gz
  cd -
done

В этом цикле, Вы вводите каждый каталог (cd "$dir"), выполняя Ваш gunzip команды и затем возвращаясь к предыдущему каталогу (cd -) для запуска следующего повторения.

0
ответ дан 28 April 2017 в 02:54

Другие вопросы по тегам:

Похожие вопросы: