如何查找多部分 rar 存档,将它们提取到目录中,如果一切成功则将其删除

如何查找多部分 rar 存档,将它们提取到目录中,如果一切成功则将其删除

我有数百个文件夹,其中包含多部分档案。

-FOLDER.1
    file.rar
    file.r00
    file.r01
    file.r02
-FOLDER.2
    file.rar
    file.r00
    file.r01

我使用下面的代码将它们提取到各自的文件夹中,并在成功提取后删除它们,

flock -n locked -c "find . -name '*.rar' -execdir unrar e -o- {} \; -execdir rm {} \; && find . -name '*.r[:0-9:][:0-9:]' -exec rm {} \;"

问题如果出现问题,可以说;

  • 档案的一部分已损坏,
  • 文件尚未上传

这个脚本删除多个部分即使提取不成功。如何改进此脚本,以便在提取成功时删除 rar 文件和部分。 我花了整个上午的时间来解决这个问题,但到目前为止还没有成功。

答案1

这些rm命令必须取决于unrar命令的结果,在您的示例中,无论发生什么情况,它们都会按顺序运行。

因此,尝试类似的方法(首先在测试目录上!):

flock -n locked -c "find . -name '*.rar' -print0 | xargs -0 -I FILE sh -c \"unrar e -o- FILE && rm FILE `basename FILE .rar`.r[:digit:][:digit:]\" "

然后,仅当命令成功完成rm时才会执行该部分。unrar

如果您的文件名包含空格,则需要额外的引号。

相关内容