创建仅提取文件且在提取过程中不创建文件夹的 tar 文件

创建仅提取文件且在提取过程中不创建文件夹的 tar 文件

我有一个文件夹,其中包含我想要压缩到 tar.gz 文件中的文件。我正在使用以下命令:

tar -czvf filename.tar.gz  foldername

果然,这创建了文件filename.tar.gz。但是,当我解压缩 tar 文件时,默认情况下它会创建一个文件夹filename并将所有文件放入该文件夹中。

当我创建 tar 文件本身时,我可以避免创建此文件夹吗?我尝试了以下命令,但它不起作用。

tar -czv filename.tar.gz  foldername

我使用的是 Ubuntu 14.04。

我当前的目录结构如下:

~/Test/foldername

目录文件夹名称包含我要压缩的所有文件。我的代码如下:

cd Test
tar czvf filename.tar foldername/*

答案1

另一种方法是使用-C命令行参数,如下所示:

tar czvf filename.tar.gz -C foldername .

请注意最后一个.,它告诉我们在通过参数-ed 进入tar后包含“此目录” 。cdfoldername-C foldername

最终,tar 文件中的名称以./而不是开头foldername/,因此它们解压到当前工作目录中。

另一方面,如果您有一个名称类似于 的 tar 文件foldername/X,并且您想在没有第一个目录组件的情况下解压缩该文件,那么这个参数--strip-components=1就是您的朋友。因此,解压命令可能是:

tar xzf filename.tar.gz --strip-components=1

根据该参数,所有路径名的第一个目录部分在解压缩过程中都会被“剥离”。查看man tar所有详细信息。

相关内容