Заархивировать определенные файлы с буквенно-цифровыми именами файлов, имена которых больше, чем у других

Я разархивировал файлы в работе с грязью. Но работа отменена, прежде чем это будет сделано. Это занимает так много времени (~ 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 . Я пытался извлечь это значение и использовать условные выражения, но пока безуспешно.

Заранее спасибо!

3
задан 16 July 2020 в 17:17

1 ответ

Вы можете просто запустить 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
4
ответ дан 30 July 2020 в 22:07

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

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