如何使用‘tar’命令将文件提取到另一个目录?

如何使用‘tar’命令将文件提取到另一个目录?

我以为tar archive.tar /users/mylocation会起作用,但事实并非如此。我该怎么做?

答案1

要将档案提取到当前目录以外的目录,请使用-C、 或--directory、 tar 选项,例如

tar -xf archive.tar -C /target/directory

请注意,目标目录在运行该命令之前必须存在(可以通过 创建mkdir /target/directory)。

阅读手册页(命令man tar:)获取其他选项。

答案2

请注意,如果您的 tarball 已经包含您想要更改的目录名称,请添加以下--strip-components=1选项:

tar xf archive.tar -C /target/directory --strip-components=1

答案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

答案4

我发现与提取相关的有趣之处在于,它取决于你如何创建档案,请参见此示例

cd /tmp
mkdir folder
touch folder/file.txt

当您执行tar -zcvf folder.tar.gz folder所有操作时,一切都按预期进行 = 当您现在解压它时,它将被解压(如果您删除了它,则会创建文件夹)为/tmp/folder/

但是,当你创建 tar 并将tar -zcvf tmp-folder.tar.gz /tmp/folder其解压到文件夹中时/tmp,结果将是/tmp/tmp/folder目录!在这种情况下,你必须将其解压到/-tar -xf tmp-folder.tar.gz -C /

相关内容