我有一个文件夹,其中包含我想要压缩到 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
后包含“此目录” 。cd
foldername
-C foldername
最终,tar 文件中的名称以./
而不是开头foldername/
,因此它们解压到当前工作目录中。
另一方面,如果您有一个名称类似于 的 tar 文件foldername/X
,并且您想在没有第一个目录组件的情况下解压缩该文件,那么这个参数--strip-components=1
就是您的朋友。因此,解压命令可能是:
tar xzf filename.tar.gz --strip-components=1
根据该参数,所有路径名的第一个目录部分在解压缩过程中都会被“剥离”。查看man tar
所有详细信息。