実行中のすべての入力ファイルを削除するbashスクリプトを取得します。

実行中のすべての入力ファイルを削除するbashスクリプトを取得します。

以前の質問では、/mnt/usb/Convert/のすべての.h264ファイルを入力として使用し、各.mp4出力ファイルを/mnt/usb/Converted/に配置するMP4Boxを実行するスクリプトを使用しています。スクリプトは次のとおりです。

for f in /mnt/usb/Convert/*.h264; do
  n=${f/Convert/Converted}
  MP4Box -add "$f" "${n%.*}.mp4"
done

このスクリプトは、実行中のすべての.h264ファイルを削除できる必要があることを見落としたことを除いて、完全に実行されます。それ以外の場合、スクリプトをcrontabすると同じファイルが繰り返されます。

スクリプトの実行が完了した後に、各.h264ファイルをさらに削除する方法について簡単な提案がある人はいますか?私は様々な形のパイプと「&&」を試しましたが、運がありませんでした。

ありがとうございます!

ベストアンサー1

ファイルを削除するコマンドは正しいですrm "$f"。まず、変換が正常に行われたことを確認するには、次の手順を実行します。

for f in /mnt/usb/Convert/*.h264; do
    n=${f/Convert/Converted}
    if MP4Box -add "$f" "${n%.*}.mp4"; then
        rm "$f"
    else
        printf '%s\n' "Failed to convert $f" >&2
    fi
done

おすすめ記事