#bash #loops
#bash #циклы
Вопрос:
У меня есть список файлов в папке, и я хочу просто поработать с некоторыми из них. Папка содержит файлы с file.qc, file.qc.gz file.qc.stat file.qc.count и так далее.
Я хочу написать цикл в bash, который откроет только файл.контроль качества и file.qc.gz , игнорируя другие расширения файлов (такие как qc.stats или qc.count)
Комментарии:
1. Я пробовал это, но также я хочу редактировать файлы отдельно, т. Е. .qc и .qc.gz нужны разные состояния awk, для которых он выдает мне ошибку
Ответ №1:
Просто укажите несколько глобусов в вашем цикле:
#!/bin/bash
# Gracefully cases where there are no matches
shopt -s nullglob
for f in *.qc *.qc.gz
do
echo "Found: $f"
done
Вы также можете записать это короче как *.qc{,.gz}
, которое расширяется до того же самого.
Комментарии:
1. Я пробовал это, но также я хочу редактировать файлы отдельно, т. Е. .qc и .qc.gz нужны разные состояния awk, для которых он выдает мне ошибку
2. Это перебирает все нужные вам файлы. Вам решать, делать с ними что-то полезное. Если вы хотите выполнить операцию условно, вы можете использовать
if
оператор. Напримерecho "This code runs for all files"; if [[ $f == *.qc.gz ]]; then echo "This code only runs for .qc.gz files"; fi