セキュリティカメラの15分のクリップを1つのファイル(24時間長)に圧縮し、そのクリップを削除するcrontabを作成しています。
avimerge -o /media/jmartin/Cams/video/Full_$(date +%F --date "Yesterday") -i /media/jmartin/Cams/video/$(date +%F --date "Yesterday")* # Converts files from the past 24 hours into one .avi
rm /media/jmartin/Cams/video/$(date +%F --date "Yesterday")* # Removes old clips that have already been compressed
私の質問は、$date変数を使用する際の危険性が何であるかです。 /video/のすべてのファイルを削除できますか?より安全な選択肢として何をお勧めしますか?
ファイル名の例(例:ファイル名にスペースが含まれています):
2016-04-25 00:00:01.avi
2016-04-25 00:15:02.avi
2016-04-25 00:30:02.avi
2016-04-25 00:45:01.avi
ベストアンサー1
技術的に$(date +%F --date "Yesterday")
は変数ではなくコマンドの置き換えですが、あなたの質問には関係ありません。何らかの理由date
でコマンドが存在しないため、何も返さない場合は、この設定に問題がある可能性があります$PATH
。この場合、すべての内容が削除されます/video/
。コマンドの置換を実行してコマンドの前の変数に割り当ててから、コマンドでそのavimerge
変数を使用すると、作業中の日付文字列が変更されていないことを確認したり、長さがゼロであることをテストしたりできます。 2つのコマンド変数の前に(長さ0の文字列がある場合)、不要な操作を実行する前に終了します。avimerge
rm