複数の部分からなるアーカイブを含む数百のフォルダがあります。
-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
ファイル名にスペースが含まれている場合は、追加の引用符が必要です。