要求:使用UNIX shell脚本将文件存档为.gz格式,不带目录结构
我正在使用以下命令
tar -C source_dir -zcvf target_dir/xyz.gz source_dir
示例:
tar -C /home/log -zcvf /home/archive/xyz.gz /home/log
此处xyz.gz
包含/home/log
创建xyz.gz
文件来维护目录结构。我希望只有文件存档而没有目录结构。
答案 0 :(得分:1)
您可以尝试以下命令:
$ cd /home/log
$ tar zcvf /home/archive/xyz.gz *
答案 1 :(得分:0)
您可以使用--transform
选项使用sed
表达式从已归档的文件名中删除主要路径组件:
tar -C /home/log -zcvf /home/archive/xyz.gz --transform 's_.*/__' /home/log
然而,这也会为每个遇到的目录写一个条目。如果您不想这样,您可以使用find
仅查找常规文件并将其传递给stdin上的tar,如下所示:
cd /home/log
find -type f -print0 | tar -zcvf /home/archive/xyz.gz --transform 's_.*/__' --verbatim-files-from --null -T -
请注意,如果不同子目录中存在同名文件,则可能会在tar存档中创建多个具有相同名称的条目。此外,您应该使用传统的.tar.gz
或.tgz
扩展名来压缩tar档案。