【问题标题】:find *.tar then extract and delete the files [closed]找到 *.tar 然后提取并删除文件 [关闭]
【发布时间】:2014-11-07 22:04:52
【问题描述】:

我正在尝试查找 tar 文件,提取文件然后删除所有提取的文件 - 我能够执行查找和提取或找到文件并将其删除但我无法将所有三个字符串在一起。

下面是我最好的尝试。它运行没有错误,但不会删除提取的文件,所以我一直在想如何删除我提取到当前目录的文件。

find  ~ -name '*.tar' | xargs tar -xf && rm -f

我尝试将 tar 解压缩到另一个目录,然后删除该目录,但在使用 xargs 时无法使其工作。我尝试搜索了很多不同的区域,但找不到任何东西,因此感谢您的帮助。

【问题讨论】:

  • 您要删除解压后的文件还是压缩包?
  • 感谢大家的帮助。我最终运行:find -name 'file.tar' | xargs 焦油-xvf | xargs rm -f && rm 'file.tar' -f

标签: linux bash find tar xargs


【解决方案1】:

&& 结束管道,它不是 xargs 命令的一部分。

您可以使用-exec 选项运行命令到find

find ~ -name '*.tar' -exec tar -xf {} \; -exec rm -f {} \;

【讨论】:

  • 这种方法的一个很好的特点是第二个exec只有在第一个exec成功时才会运行。因此,在逻辑上就像在命令之间使用&&
【解决方案2】:

使用 xargs 运行两个或多个命令:

find  ~ -name '*.tar' | xargs -I {} sh -c 'tar -xf {} && rm -f {}'

只有解压成功后tar文件才会被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2013-09-14
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多