我有 100 个文件,n1.txt、n2.txt……我想对每个文件进行 gzip 压缩,但不是在同一个文件中——最后我想要有 100 个n*.txt.gz
文件。
我怎样在 Linux 中使用 Bash 来实现这一点?
答案1
要压缩所有文件,您可以使用:
gzip n*.txt
将n*.txt
扩展为所有文件名作为的参数gzip
。
答案2
虽然 hymie 的回答完美地涵盖了解决方案,但我想提供一种可能更灵活的替代方案,因为它允许您find
首先使用命令来检查您的regex
匹配项是否符合您的要求,然后再检查gzip
文件。
find . -name "*.txt" -exec gzip {} \;
这将从您当前的工作目录中逐个搜索以.txt
和结尾的所有文件gzip
。
您gzip
可能需要传递:
-v
详细
-k
保留原始文件的
-9
zip 级别(9 压缩程度最高,6 默认)
或者,您可能想要使用pigz
大多数发行版中存在的并且是的并行插件gzip
。
# parallel gzips all text files in the subfolders below command
find . -name "*.txt" -exec pigz -v9 {} \;