内容に文字列が含まれているファイル名と一緒にフォルダ名を見つける必要があります。私はこのディレクトリ「/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
これを行うための最良の方法は何ですか?
これを試して:
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
を実行して、文字列が含まれているかどうかを確認します。