コンテンツに私の文字列を含むフォルダ名とファイル名を見つける必要があります。私はこのディレクトリ/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
これを行う最良の方法は何ですか?
ベストアンサー1
この試み:
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
実行され、そのファイルに文字列が含まれていることを確認します。