如何告诉 xargs 将 tar 解压到某个目录

如何告诉 xargs 将 tar 解压到某个目录

我写了我的第一个脚本:

find /media/temp/test -type f -printf '%T@ %p\n*.tar.gz' | sort -n | tail -1 | cut -f2- -d" " | xargs tar -xvpf 

我想找到最新修改的文​​件 .tar.gz ,然后将其解压到某个目录而不是 /media/temp/test

答案1

假设命令的其余部分工作正常,您只需替换最后一部分即可

xargs tar -xvpf

(cd /certain/directory; xargs tar -xvpf)

并且将从该目录执行 tar 命令。这是执行相对于另一个目录的命令的常见有用“技巧”。

请注意,这只适用于此,因为您的 tar 文件名(在本例中为 find 命令的输出)是绝对路径。如果它是相对路径名,那么上面的“cd”将不起作用。

tar已经有一个可以使用的参数:

 -C directory
         In c and r mode, this changes the directory before adding the following files.  In x mode, change directories after opening
         the archive but before extracting entries from the archive.

所以,你也可以让最后一部分是

xargs tar -C /certain/directory -xvpf

检查并测试您的 tar 版本;平台之间存在细微的差异(您不指定您正在使用哪个 UNIX 变体)。希望您的存档中的路径名也是相对的。

相关内容