如何将目录中的每个文件压缩到自己的tar中,同时保留每个文件的名称?
即file1.out file2.out
– >
file1.out.tar.gz file2.out.tar.gz
将每个文件放入单独的tar文件在这种情况下没有任何意义。 你可以使用gzip
直接压缩它们:
gzip *
会导致file1.out.gz
, file2.out.gz
等
只有在需要将压缩存档作为单个文件的情况下才能使用tar
。
如果你不需要每个文件的tar档案,你可以像这样创build它:
for i in *; do tar -czf $i.tar.gz $i; done
要build立在@ SvenW的答案(这将只适用于当前目录),如果你有大量的文件或想要在recursion目录结构上做,你也可以使用
find . -type f -exec gzip \{\} \;
如果你需要把输出放到不同的目录下(在这个例子中是../target
),而不想删除原始文件,你可以这样做:
find . -type f -print | while read fname ; do mkdir -p "../target/`dirname \"$fname\"`" gzip -c "$fname" > "../target/$fname.gz" done