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