我想压缩(和压缩)不含目录的文件,并且不存储目录路径。我只希望存档中有平面文件。
例如如果我做这样的事情:
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 {} +