3日経ったファイルをリストしたいと思います。私はstackoverflowでこれを見つけました:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012
しかし、コマンド全体の意味がわかりません。短くて簡単に理解できるものがあるのだろうか。
3日経ったファイルをリストしたいと思います。私はstackoverflowでこれを見つけました:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012
しかし、コマンド全体の意味がわかりません。短くて簡単に理解できるものがあるのだろうか。
回答:
これは動作するはずです
find . -type f -mtime -3
説明
find find files
. starting in the current directory (and it's subdirectories)
-type f which are plain files (not directories, or devices etc)
-mtime -3 modified less than 3 days ago
詳細man find
を見る
更新
特定の日時(たとえば、2013年2月20日の08:15)より前に最後に変更されたファイルを見つけるには、次のようなことができます。
touch -t 201302200815 freds_accident
find . -type f ! -newer freds_accident
rm freds_accident
参照man touch
(またはinfo touch
-うーん!)
これは適度に恐ろしく、より良い方法があるかもしれません。上記のアプローチは、古代およびGNU以外のUnixおよび現在のLinuxで機能します。
-daystart
オプションは今日の日付を使用します。3月4日08:00に、3月find -mtime +3
1日08:00よりも前に変更されたファイルを検索します。私が考えるfind -daytime -mtime +3
0時00分3月1日よりも長い時間前に変更されたファイルを見つける必要があります。
Findは、-ctimeおよび-mtime +/-引数で間隔をサポートします。
例えば
$ for y in {07..14};do \
for m in {01..12};do \
for d in {01..30};do \
touch -t 20$y$m${d}0101 $y$m$d.file ;done;done;done
$ find . -mtime +0 -mtime -$(( 3 * 365 + 3 )) |sort
./100304.file
./100305.file
./100306.file
(...)
./130302.file
./130303.file
./130304.file
3年から3日前から1週間前までの間隔でファイルを作成したい場合は、-mtime +7 -mtime -1098を使用します。
daystart
それは正しい選択のようですが、どのようにstart
日付を渡すのですか?