ファイルを削除するシェルスクリプト

ファイルを削除するシェルスクリプト

6日以上経過したファイルを削除してから、削除したファイルを記録しようとしています。
これまで。

1つのshファイルから私は次のようになりました:

find /home/pi/ftp/upload -type f -mtime +6 -exec rm {} +

それからsudo crontab

59 23 * * * /home/pi/scripts/cullftp.sh > /var/log/ftp/`date +\%Y-\%m-\%d-\%H\%M\%S`-cull.log 2>&1

ただし、真夜中に実行すると空のファイルのみが生成され、ファイルは削除されません。

コードのこの部分は機能しますが:

find /home/pi/ftp/upload -type f -mtime +6

この問題を解決するための最良の方法は何ですか?

答え1

1)スクリプトファイルが実行可能であり、正しいhashbang行(#!/bin/shまたは#!/bin/bash同様のエントリ)があることを確認してください。ただし、実行可能でない場合はエラーが発生します。

2)何も印刷されません。たとえば、またはサポートしている場合は、印刷ファイル名を find ... -exec rm明示的に知らせる必要があります。findfind ... -exec rm + -printfind ... -delete -printfind-delete

3)少なくともGNU findには-mtime +6興味深い丸めがあります。まず、時間を1日(24時間)に丸め、次に結果の時間が6より大きいことを確認します。その結果、少なくとも7 * 24時間を過ぎたファイルのみが一致します。同様のものを使用すると-mmin +8640影響が軽減されます。 (6日 * 24時間/日 * 60分/時間 = 8640分)

関連情報