使 tar 存档仅包含文件而不包含目录(相当于 zip -D -j)

使 tar 存档仅包含文件而不包含目录(相当于 zip -D -j)

我想压缩(和压缩)不含目录的文件,并且不存储目录路径。我只希望存档中有平面文件。

例如如果我做这样的事情:

tar -czf archive.tgz /home/another/path/*

然后我的档案中就会有带有路径的文件:

home/another/path/file1
home/another/path/file2
home/another/path/file3

但我只想要这个:

file1
file2
file3

这相当于 zip 的zip -D -j命令。

为了简单起见,我们假设里面没有子目录/home/another/path/- 它只包含文件。

我尝试了 wit-C选项,但似乎不起作用。使用如下命令:

tar -C /home/another/path/ -czf archive.tgz *

tar 尝试将文件存档在当前目录中,而不是传递给的目录中-C。我正在使用(GNU tar) 1.19

答案1

请尝试以下操作:

find . -type f -printf "%h\n%f\n" | xargs -L 2 tar -rf /tmp/files.tar -C 

或者根据您的需要进行一些变化。执行此命令时应考虑安全性。如果您愿意在文件名前使用“./”,则以下可能更安全一些:

find -type f -execdir tar -rf /tmp/files.tar {} \;

或者

find -type f -execdir tar -rf /tmp/files.tar {} +

相关内容