解压缩Z文件,然后在脚本中删除文件

时间:2012-02-08 14:03:55

标签: bash unix

我想在目录中解压缩Z文件,然后删除它们(但保留原始的Z文件)。这样做的最佳方式是什么?

谢谢!

编辑:如果在解压缩后删除Z文件,我怎么能压缩它们 - 它们非常多。一个想法:是否可以将文件解压缩到一个文件夹中,然后将该文件夹压缩回Z文件?

1 个答案:

答案 0 :(得分:2)

Unix uncompress会在文件解压缩时自动删除压缩文件。如果要保留压缩文件并将其解压缩,请创建该文件的副本并解压缩该副本:

#!/bin/sh

for file in *.Z; do

echo $file

#copy to temporary file and uncompress
cp $file tmp.Z
uncompress tmp.Z

#rename uncompressed temp file to match original name
mv ${file%.*} $file

done

请注意,compress一次只能处理一个文件。如果您需要将多个文件压缩在一起,则可以使用tar。例如,您可以像这样修改上述脚本:

#!/bin/sh

mkdir tmp

for file in *.Z; do
mv $file tmp/
uncompress tmp/$file
done

tar -cf files.tar tmp/*
compress files.tar
rm -r tmp

这个脚本现在做的是:

1)在当前目录下创建临时目录 2)将所有.Z文件解压缩到该目录中 3)删除所有.Z文件(uncompress自动执行) 4)将所有文件合并到files.tar存档中 5)将存档压缩为files.tar.Z 6)删除未压缩的文件和临时目录