如何使用TAR归档时去除路径

时间:2011-11-07 22:33:28

标签: linux unix archive tar

我有一个文件,其中包含我想用tar存档的文件列表。 我们称之为mylist.txt

它包含:

/path1/path2/file1.txt
/path1/path2/file3.txt
...
/path1/path2/file10.txt

我想要做的是将此文件存档到tarball中,但不包括/path1/path2/。 目前通过这样做:

tar -cvf allfiles.tar -T mylist.txt

在取消归档后保留路径。

我试过这个但是也不行:

tar -cvf -C /path1/path2 allfiles.tar -T mylist.txt

它归档/path1/path2中的所有文件,即使那些不在mylist.txt中的文件

有办法吗?

1 个答案:

答案 0 :(得分:36)

在“提取阶段”中,您可以使用strip-components标记,如

tar xvf tarname.tar --strip-components=n

将删除文件名的前n个前导组件。虽然如果你有不同的文件路径组件,这将不适用于所有情况。

如果你想在存档时这样做,只会想到一件事,我会分享

INPUT:文件列表+完整路径

1)对于每一行,将路径拆分出文件名

2)对该路径执行cd并对该文件名执行tar

3)重复每一行