31

59 分以上経過したファイルを削除したいと考えています。私はこれまでのところこれを持っています:

find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" -exec rm -f {} \;

これは機能せず、すべてのファイルを削除するようです。これを数回テストしましたが、問題はdaystart.

man ページを読んだところ、24 時間前ではなく、1 日の始まりに基づいているようです。この場合、59 分以上経過したファイルを正確に削除するにはどうすればよいですか? 考慮しdaystartてさらに数分追加する必要がありますか?

例:

ubuntu@ip-10-138-30-118:/tmp$ ls -la
total 8
drwxrwxrwt  2 root   root   4096 Jul 20 14:39 ./
drwxr-xr-x 23 root   root   4096 Jun 25 18:34 ../
-rw-rw-r--  1 ubuntu ubuntu    0 Jul 20 12:35 a.txt

次の両方のコマンドは、ファイルを返します。

ubuntu@ip-10-138-30-118:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*"
/tmp/a.txt

と:

ubuntu@ip-10-138-30-118:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*"
/tmp/a.txt

ただし、ファイルは 659 分 (10.9 時間) より古いものではありません。しかし、759 (12.65 時間) で、ファイルが返されなくなったのでしょうか?

4

2 に答える 2

33

とともに使用すると-mmin、今日の最初ではなく、今日の終わり-daystartから計算するように見えます。

59 分以上前に変更されたファイルを検索するだけの場合は、そのオプションは必要ありません。-mminデフォルトでは現在の時刻から計算します。

barmar@dev:~/testdir$ date
Sat Jul 20 10:02:20 CDT 2013
barmar@dev:~/testdir$ ls -l
total 0
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt
barmar@dev:~/testdir$ find . -maxdepth 1 -mmin +2 -type f
./a.txt
barmar@dev:~/testdir$ find . -maxdepth 1 -mmin +10 -type f
于 2013-07-20T15:01:39.630 に答える