2014-11-19 3 views
0

У меня есть каталог с 94 подкаталогами, каждый из которых содержит один или два файла *.fastq. Мне нужно применить одну и ту же команду python к каждому из этих файлов и создать новый файл qc_*.fastq., применяя ту же команду к нескольким файлам в нескольких подкаталогах

Я знаю, как применить Баш скрипт индивидуально для каждого файла, но мне интересно, если есть способ, чтобы написать Баш скрипт, чтобы применить команду ко всем файлам сразу

+0

Непонятно, как вы думаете, что это будет выглядеть. Вы имеете в виду, что вы запускаете скрипт bash в каталоге верхнего уровня, который перемещается вниз в подкаталоги? – ABMagil

ответ

3

Использование найти:

find . -type f -iname "*.fastq" -exec python script {} \; 

.: самый верхний каталог

-type f: только файлы

-iname "*.fastq": имя файла заканчивается на .fastq (регистр нечувствителен)

-exec python script: Команда, которую вы хотите выполнить.

+0

Удивительная благодарность! команды find отлично работают, но есть ли переменная python, которую я могу использовать для добавления префикса qc_ в выходной файл? – wrutter

+0

Это, очевидно, будет зависеть от того, что делает ваш скрипт python. Возможно, вы сможете просто выполнить скрипт -exec python {}> qc_file.fastq \; '. – nanny

+0

На самом деле выше не будет работать для того, что вы хотите. Это будет зависеть от вашего скрипта. – nanny

2

Вы можете попробовать find . -name "*.fastq" | xargs your_bash_script.sh, которые используют find, чтобы получить все файлы и применить сценарий к каждому из них.

Смежные вопросы