tar archive.tar /users/mylocation
可以工作,但是不行。我怎样才能做到这一点? #1 楼
要将存档解压缩到当前目录以外的其他目录,请使用tar选项-C
或--directory
,如tar -xf archive.tar -C /target/directory
。请注意,目标目录必须存在于运行该命令(可以由
mkdir /target/directory
创建)。阅读手册页(命令:
man tar
)以了解其他选项。评论
可以删除路径吗:即只检索文件
– zzapper
2014年8月26日14:52
如果文件较大,则在运行该命令时,在工作几秒钟甚至几分钟后,您不会获得任何输出。您可以通过添加-v标志(详细模式)来解决此问题,该标志列出了提取文件时每个文件的名称。
–IQAndreas
2015年5月7日6:15
@consultstan xkcd.com/1168
–邓肯X辛普森
16年11月28日在21:15
这些年来,在tar积累了所有选项之后,如果不存在创建输出目录的选项,那么仍然没有选择吗?
–EM0
18年4月13日在8:21
我完全同意,如果不存在输出目录,应该有一个选项来创建它。否则,您可以提取文件并使用mv。
– Marius Hofert
19年5月13日在11:50
#2 楼
请注意,如果您的压缩文件已经包含要更改的目录名称,请添加--strip-components=1
选项:tar xf archive.tar -C /target/directory --strip-components=1
评论
谢谢。通过wget / etc进行的下载始终有一个“父”目录。这是imo的完整答案-或应在上面的答案中注明。
– bshea
17-4-28在16:51
正是我想要的。 --strip-components在运行可能使用不同版本的预配器时非常有用。这样,/ target / directory可以是通用名称,而不必担心提供程序如何选择命名其存档文件夹。
– Jack_Hu
19年1月30日在17:54
请注意,这可以删除任何数量的引导目录,而不仅仅是一个:--strip-components = NUMBER从提取时的文件名中剥离NUMBER个引导组件
– aexl
19-10-28在7:37
#3 楼
结合以前的答案和评论:要提取内容并在缺少目标目录时创建目标目录:
mkdir -p /target/directory && tar xf archive.tar -C /target/directory
要提取并还删除zip中的根(第一级)目录
mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
评论
您可以通过在tar命令中添加--one-top-level = / target / directory选项并删除-C选项来跳过创建目录的步骤。看到这个答案
–smac89
19/12/12在2:02
#4 楼
另一种选择是使用--one-top-level。这将根据原始文件名自动创建目录。tar zxvf filename.tgz --one-top-level
如果需要,您可以指定自己的目录,tar会自动创建它。 />
tar zxvf filename.tgz --one-top-level=new_directory
评论
我正在使用GNU tar 1.26,并且出现--one-top-level的无法识别的选项错误
–艾玛·斯特鲁贝尔(Emma Strubell)
18/09/24在14:29
这是我需要的答案。非常有用的“ not”(不必指定目录名称),或记住将引用回该文件的名称的特殊代码。谢谢。
–伪影
19年7月20日在0:51
#5 楼
我发现与提取有关的有趣之处在于,这取决于创建存档的方式,请参见以下示例。cd /tmp
mkdir folder
touch folder/file.txt
执行操作时一切都按预期=现在将其解压缩,将其解压缩为
tar -zcvf folder.tar.gz folder
(如果删除了文件夹,则会创建该文件夹)。但是,当您将tar创建为
/tmp/folder/
并将其解压缩到/ tmp文件夹中时,结果将为是tar -zcvf tmp-folder.tar.gz /tmp/folder
目录!在这种情况下,您必须将其解压缩到/-/tmp/tmp/folder
#6 楼
使用tar 1.29,我们可以在tar文件名之后添加目录名称。例如,tar zxvf tar-file directory-name/
评论
在tar v1.30上尝试过此命令在tar下失败:目录名:在存档tar中找不到:由于先前的错误而以失败状态退出-请验证它是否确实有效,否则请更正/删除答案-谢谢。
–stason
11月17日下午2:47
评论
同样,将-C,--directory DIR \ n更改为目录DIR应该描述为将输出目录更改为DIR(如果DIR不存在,将失败)。谢谢@Mich。另请参阅@Bryan_Larsen的答案。@Ujjwal Sing:的确,tar手册页没有那么大的帮助。它将“ -C DIR”描述为“更改为目录DIR”。更糟糕的是:“ tar -C mydir xf archive.tar”不起作用,而“ tar xf archive.tar -C mydir”则起作用。
@PatMorin公平地说,一旦您理解了调用约定的参数,就可以使用它。您也可以执行tar xfC archive.tar mydir或tar -C mydir -xf archive.tar。坦白地说,它只是混合了破坏样式的传统样式和GNU样式的标志。传统标志作为第一个参数作为一个blob传递。如果不是第一个,您就不能指望它们能起作用。 (我的意思是,是的,无论如何都可以解释它-我的观点是超越标准,而不是标准标准)