Я разархивировал файлы в работе с грязью. Но работа отменена, прежде чем это будет сделано. Это занимает так много времени (~ 10 минут для файла и 200 файлов). Как я могу сжать только те файлы, которые еще не заархивированы?
$ ls
SRR7121484_1.fastq
SRR7121484_1.fastq.gz
SRR7121484_2.fastq
SRR7121484_2.fastq.gz
SRR7121485_1.fastq
SRR7121485_2.fastq
SRR7121488_1.fastq
SRR7121488_2.fastq
....
Как видите, все остальные файлы больше, чем число 7121485 . Я пытался извлечь это значение и использовать условные выражения, но пока безуспешно.
Заранее спасибо!
Вы можете просто запустить gzip
для всех файлов fastq
напрямую. По умолчанию он спросит, хотите ли вы перезаписать существующие файлы:
$ gzip -k *.fastq
SRR7121484_1.fastq.gz already exists -- do you wish to overwrite (y or n)?
Если gzip
не может ничего прочитать со стандартного ввода, он просто пропускает эти файлы:
% gzip -k *.fastq -v < /dev/null
gzip: SRR7121484_1.fastq.gz already exists -- skipping
gzip: SRR7121484_2.fastq.gz already exists -- skipping
SRR7121485_1.fastq: -99.9% -- replaced with SRR7121485_1.fastq.gz
SRR7121485_2.fastq: -99.9% -- replaced with SRR7121485_2.fastq.gz
SRR7121488_1.fastq: -99.9% -- replaced with SRR7121488_1.fastq.gz
SRR7121488_2.fastq: -99.9% -- replaced with SRR7121488_2.fastq.gz
Итак, просто запустите:
gzip -k *.fastq < /dev/null