複数の部分で構成された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

ファイル名にスペースが含まれている場合は、追加の引用符が必要です。

おすすめ記事