tar 压缩没有目录结构

tar 压缩没有目录结构

在我当前的目录下,我有两个子目录:

dir_1/
   - file1.png
   - file2.png
   ...
   - fileN.png

dir_2/
   - fileA.txt
   - ...
   - fileZ.txt

当我通过以下方式 tar 压缩两个目录时:

tar -cvzf result.tar.gz dir_1/ dir_2/ 

我有结果.tar.gz但它保留了目录结构。我的意思是当我提取结果.tar.gz,我再次得到dir_1& dir_2

如何 tar 压缩以便不保留目录结构,这意味着当我提取 tar.gz 文件时,我只得到文件

result/
   file1.png 
   ... 
   fileN.png 
   fileA.txt
   ...
   fileZ.txt

答案1

我认为你可以通过该-C选项来做到这一点。

从 tar 手册页:

-C directory, --cd directory, --directory directory
    In c and r mode, this changes the directory before adding the following files.
    In x mode, change directories after opening the archive but before extracting
    entries from the archive.

这意味着您应该能够运行

tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .

实现你想要的。

答案2

使用 GNU tar,您可以--transform在将文件添加到存档或从存档中提取文件时使用重写文件名的选项。对于 BSD tar 或 pax,该选项-s执行相同的操作。

要删除前导目录组件(以便dir_1/subdir/somefile存储为subdir/somefile):

tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2

要删除所有目录组件(以便dir_1/subdir/somefile存储为somefile):

tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2

相关内容