web-dev-qa-db-ja.com

日付の範囲でファイルをどのようにリストしますか?

3日経過したファイルを一覧表示したいと思います。私はこれを stackoverflow で見つけました:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012

しかし、コマンド全体が何を意味するのか理解できません。短くてわかりやすいものがあるのではないでしょうか。

4
Valter Silva

これはうまくいくはずです

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 --ugh!)

これは適度に恐ろしいことであり、より良い方法があるかもしれません。上記のアプローチは、現在のLinuxだけでなく、古代および非GNUUnixでも機能します。

6
RedGrittyBrick

検索は、-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を使用します。