Cha*_* L. 12 linux compression gzip
我期待在保留原始文件的同时gzip目录中的多个文件(多个.gz文件).
我可以使用以下命令执行单个文件:
find . -type f -name "*cache.html" -exec gzip {} \;
Run Code Online (Sandbox Code Playgroud)
要么
gzip *cache.html
Run Code Online (Sandbox Code Playgroud)
但都没有保留原件.我试过了
find . -type f -name "*cache.html" -exec gzip -c {} > {}.gz
Run Code Online (Sandbox Code Playgroud)
但那只做了一个{} .gz文件.有一个简单的方法吗?
我会使用bash(1)
简单的for
构造:
for f in *cache.html ; do gzip -c "$f" > "$f.gz" ; done
Run Code Online (Sandbox Code Playgroud)
如果我知道文件名是"理智的",那么我就会放弃""
参数,因为我很懒.我的文件名通常都是理智的.但脚本没有那么奢侈.
您>
在最后一个命令中由运行的同一个shell解析find
.使用嵌套shell:
find . -type f -name "*cache.html" -exec sh -c "gzip < {} > {}.gz" \;
Run Code Online (Sandbox Code Playgroud)
-k, --keep
gzip 1.6(2013年6月)添加了该-k, --keep
选项,现在您可以:
find . -type f -name "*cache.html" -exec gzip -k {} \;
gzip -k *cache.html
Run Code Online (Sandbox Code Playgroud)
或简单地递归所有文件:
gzip -kr .
Run Code Online (Sandbox Code Playgroud)
发现于:https://unix.stackexchange.com/questions/46786/how-to-tell-gzip-to-keep-original-file