web-dev-qa-db-ja.com

Linuxで2つのフォルダの日付の間のファイルを見つけますか?

内容に文字列が含まれているファイル名と一緒にフォルダ名を見つける必要があります。私はこのディレクトリ「/data/queue/data」にいます。同じディレクトリにたくさんのフォルダがあり、それらの各フォルダ内にさまざまなファイルがあります。

以下は、このディレクトリ「/data/queue/data」内のフォルダであり、これらの各フォルダにはさまざまなファイルが含まれています。

david@machineA:/data/queue/data$ ls -lrth
drwxr-xr-x 2 david david  12K Apr 11 18:58 1428800400
drwxr-xr-x 2 david david  12K Apr 11 19:58 1428804000
drwxr-xr-x 2 david david  12K Apr 11 20:58 1428807600

このディレクトリからのみコマンドを実行したい-"/data/queue/data"が、タイムスタンプがApril 13th 3 AM to April 13th 9 AMからのフォルダ内のファイルのみを検索する必要があります。

以下は、すべてのフォルダー内のファイルを再帰的に検索するコマンドですが、April 13th 3 AM to April 13th 9 AMフォルダーからのファイルのみを検索するようにするにはどうすればよいですか?

david@machineA:/data/queue/data$ grep -rl "pcV6URY" /data/queue/data

これを行うための最良の方法は何ですか?

4
david

これを試して:

touch -d"April 13 3 AM" file1
touch -d"April 13 9 AM" file2
find . -newer file1 ! -newer file2 -exec grep -l "pcV6URY" {} +
rm file1 file2

使い方

findは時間と直接連携できますが、touchは人間スタイルの日付をより適切に処理します。

  • touch -d"April 13 3 AM" file1; touch -d"April 13 9 AM" file2

    これにより、時間範囲の開始と終了をマークする2つのファイルが作成されます。

  • find . -newer file1 ! -newer file2 -exec grep -l "pcV6URY" {} +

    これにより、file1よりも新しいが、file2よりも新しいファイルは検出されません。このようなすべてのファイルに対して、ファイルに対してgrepを実行して、文字列が含まれているかどうかを確認します。

6
John1024