UNIXコマンドを使用find
して、特定の日に作成されたファイルを検索するにはどうすればよいですか?
UNIXコマンドを使用find
して、特定の日に作成されたファイルを検索するにはどうすればよいですか?
回答:
Maxが指摘したように、それはできませんが、変更またはアクセスされたファイルをチェックすることはそれほど難しいことではありません。今日までに、これについてのチュートリアルを書きました。その本質は使用することで-newerXY
あり、! -newerXY
:
例:2007年6月7日に変更されたすべてのファイルを検索するには:
$ find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08
2008年9月29日にアクセスされたすべてのファイルを検索するには:
$ find . -type f -newerat 2008-09-29 ! -newerat 2008-09-30
または、同じ日に権限が変更されたファイル:
$ find . -type f -newerct 2008-09-29 ! -newerct 2008-09-30
ただし、ファイルの権限を変更しない場合、通常は「c」が作成日に対応します。
-newerBt
では、ファイルの誕生(作成)時間と一致します。
find location -ctime time_period
time_periodの例:
30日以上前: -ctime +30
30日未満: -ctime -30
ちょうど30日前: -ctime 30
ctime
作成時間とは関係ありません。これはiノードの変更時間です。
これは2つのステップですが、私はこの方法で行うのが好きです。
まず、特定の日付/時刻のファイルを作成します。この場合、ファイルは午前0時の2008-10-01です。
touch -t 0810010000 /tmp/t
今、私たちは(ファイル更新日時で行く。また、使用することができます上記のファイルよりも新しいか古いすべてのファイルを見つけることができます-anewerアクセスし、ため-cnewerファイルのステータスが変更されました)。
find / -newer /tmp/t
find / -not -newer /tmp/t
タッチで2つのファイルを作成することにより、特定の日付の間のファイルを確認することもできます
touch -t 0810010000 /tmp/t1
touch -t 0810011000 /tmp/t2
これは、2つの日付と時刻の間のファイルを検索します
find / -newer /tmp/t1 -and -not -newer /tmp/t2
find
不足している古い問題の解決策としての+1-newerXY
あなたはこれを行うことができます:
find ./ -type f -ls |grep '10 Sep'
例:
[root@pbx etc]# find /var/ -type f -ls | grep "Dec 24"
791235 4 -rw-r--r-- 1 root root 29 Dec 24 03:24 /var/lib/prelink/full
798227 288 -rw-r--r-- 1 root root 292323 Dec 24 23:53 /var/log/sa/sar24
797244 320 -rw-r--r-- 1 root root 321300 Dec 24 23:50 /var/log/sa/sa24
できません。-cスイッチは、アクセス許可が最後に変更された日時を示し、-aは最新のアクセス時間をテストし、-mは変更時間をテストします。Linux(ext3)のほとんどのフレーバーで使用されているファイルシステムは、「作成時間」レコードをサポートしていません。ごめんなさい!
@Max:作成時間についてです。
あなたはのいずれかの経過日数の引数を計算したい場合は、-atime
、-ctime
、-mtime
パラメータには、次の式を使用することができます
ELAPSED_DAYS=$(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))
「2008-09-24」を任意の日付に置き換えます。ELAPSED_DAYSには、その日から今日までの日数が設定されます。(更新:結果から1を引いて、find
の日付の丸めに合わせます。)
したがって、2008年9月24日に変更されたファイルを見つけるには、コマンドは次のようになります。
find . -type f -mtime $(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))
これは、使用しているバージョンが@Arve:の回答で言及されてfind
いる-newerXY
述語をサポートしていない場合に機能します。