我在 slurm 作业中对文件进行了 gzip 压缩。但作业在完成之前被取消了。这花了很长时间(一个文件约 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。我尝试提取该值并使用条件,但尚未成功。
提前致谢!
答案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