2013-07-20 10 views
11

59分以上経過したファイルは削除したいと思います。私は今までこれを持っています:X分より古いファイルを削除する

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

これはうまくいかず、すべてのファイルを削除したようです。私はこれを数回試しましたが、問題はdaystartとすると思います。

私はマニュアルページを読んでおり、24時間前よりもむしろ1日の始まりに時間を置いているようです。この場合、59分以上経過したファイルを正確に削除するにはどうすればよいですか? daystartのアカウントを追加し、さらに数分を追加する必要がありますか?

例:

[email protected]:/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 

どちらも次のコマンドは、ファイルを返す:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" 
/tmp/a.txt 

そして:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*" 
/tmp/a.txt 

をしかし、ファイルは659分(10.9よりも古いではありません時間)!しかし、759(12.65時間)にはもうファイルを返さないのですか?

+0

ところで、私は、 '-exec rm -f {} \;'の代わりに '-delete'パラメータが好きです。 – lanes

答えて

14

-mminと一緒に使用すると、end今日からではなく、最初から計算されるように見えます。

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

[email protected]:~/testdir$ date 
Sat Jul 20 10:02:20 CDT 2013 
[email protected]:~/testdir$ ls -l 
total 0 
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt 
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +2 -type f 
./a.txt 
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +10 -type f 
関連する問題