
Как запустить одну и ту же команду в терминале Mac для нескольких файлов в папке? Файлы называются как 24538_7#1.fq
, 24538_7#2.fq
, 24538_7#3.fq
, 24538_7#4.fq
и так далее.
Команды следующие:
sed -n '\|@.*/1|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired1.fq
sed -n '\|@.*/2|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired2.fq
Поскольку имя файла включает в себя счетчик, очевидно, что имена файлов необходимо изменить.
Я пытался написать команду, но застрял на переименовании файла. Мои усилия для команды приведены ниже:
for file in 24538_7#*.fq; do sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file/fq/fq}"; done
(P.S. Я использую MacOS)
решение1
Предполагая, что все файлы имеют одинаковые имена, вы можете использовать
for file in 24538_7#*.fq; do
sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file%.fq}_paired1.fq"
sed -n '\|@.*/2|{N;N;N;p;}' "$file" > "${file%.fq}_paired2.fq"
done
или (продолжить то, что вы уже пробовали)
for file in 24538_7#*.fq; do
sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file/.fq/_paired1.fq}"
sed -n '\|@.*/2|{N;N;N;p;}' "$file" > "${file/.fq/_paired2.fq}"
done
Предупреждение: Это будет работать только для вашей конкретной ситуации и для ваших конкретных имен файлов.