Как кошке в для цикла

У меня есть 500 папок, содержащих многих * _1.fastq.gz и * _2.fastq.gz файлы на папку.

Я хочу:

cat *_1.fastq.gz > Combined *_1.fastq.gz & cat *_2.fastq.gz > Combined_2.fastq.gz

на папку.

Как я достигаю этого? Я хотел бы изучить некоторый удар, я доволен Python

1
задан 11 March 2015 в 06:55

3 ответа

for i in {1..2} ; do cat *_$i.fastq.gz >>Combined_$i.fastq.gz ; done

Это, вероятно, не будет работать хорошо, как сцепленные файлы gzip; Я полагаю, вы бы предпочли использовать zcat *_$i.fastq.gz >>Combined_$i.fastq & amp; затем gzip; или, может быть, лучше, просто отказаться от идеи кошки & amp; сделайте это:

for i in {1..2} ; do tar -c *_$i.fastq.gz >Combined_$i.fastq.gz.tar; done

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

for f in *; do
  pushd . ; cd $f
      for i in {1..2} ; do tar -c *_$i.fastq.gz >Combined_$i.fastq.gz.tar; done
  popd
done

Итак, здесь индекс цикла $ f выбирает каждую папку; экономит ваше место; диски в папку; выполняет цикл; возвращается в исходный каталог & amp; петли снова.

Здесь есть pushd / popd, чтобы гарантировать, что из-за ошибки вы не перемещаетесь по файловой системе! Не обязательно, но полезно учиться.

2
ответ дан 10 November 2019 в 10:56

Это не яркий пример для изучения удара, но самый простой путь:

zcat *_1.fastq.gz | gzip > Combined_1.fastq.gz &
zcat *_2.fastq.gz | gzip > Combined_2.fastq.gz

Используя цикл:

for f in *_1.fastq.gz; do
    zcat "$f"
done | gzip > Combined_1.fastq.gz

Примечания

  • Вы выполняете итерации по результатам шаблона шарика - не испытывают желание проанализировать вывод ls ( http://mywiki.wooledge.org/ParsingLs )
  • , заключают Ваш в кавычки "$variables", когда Вы хотите значение
  • , можно перенаправить или передать вывод по каналу всего для или цикла с условием продолжения.
1
ответ дан 10 November 2019 в 10:56

Вам нужно что-то как

for d in */
    do cd $d && cat *_1.fastq.gz > Combined_1.fastq.gz && cat *_2.fastq.gz > Combined_2.fastq.gz
done
-1
ответ дан 10 November 2019 в 10:56

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

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