Цикл Bash с условием if not - PullRequest
       6

Цикл Bash с условием if not

0 голосов
/ 03 октября 2018

Я имею в виду 100 текстовых файлов, из которых 50 из них имеют имя, начинающееся с sshv2l, а другие пятьдесят - без sshv2l.Я хочу объединить их в цикле, как это (ниже), где у меня есть два набора объединенных файлов.Для тех с sshv2l, я сделал что-то вроде ниже, но не смог объединить файлы без sshv2l.Как мне написать, если нет условия внутри цикла в bash?

for f in sshv2l*; do
echo "Merging file :" $f
cat ${f} >> sshv2l_merged.fastq
done

1 Ответ

0 голосов
/ 03 октября 2018

Ваш код цикла может быть просто заменен на один cat:

cat sshv2l* >> /path/to/sshv2l_merged.fastq

Теперь, чтобы получить все файлы, не начинающиеся с sshv2l, вы можете использовать extglob отрицательный глобус:

# enable extglob
shopt -s extglob nullglob

cat !(sshv2l*) >> /path/to/not_sshv2l_merged.fastq

# disable extglob
shopt -u extglob nullglob

Я добавил несколько воображаемых путей /path/to/, чтобы убедиться, что вы храните файлы *.fastq вне текущего каталога, чтобы избежать их объединения в команды cat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...