特定の日付の特定の文字列のファイルを検索するには?

特定の日付の特定の文字列のファイルを検索するには?

特定の日付のファイルから特定の文字列を取得する方法は?

たとえば、次の3つのファイルがあります。

'a1' dated: 20 Feb,
'a2' dated 21 Feb,
'a3' dated 22 Feb.

「JMS111」などの特定の文字列の日付=「2月21日」のすべてのファイルを検索したいと思います。

私は成功せず、次のコマンドを試しました。

ls -lt |grep 'JMS111' -ctime 2019/02/21 
find -name '*.xml' -type f -printf '%Tw:%h/%f\0' | grep 'JMS111'

ベストアンサー1

この問題を解決する1つの方法は、探している日付を角括弧で指定するようにタイムスタンプファイルを設定することです。

touch -t 201902210000 /tmp/start-time
touch -t 201902212359.59 /tmp/end-time

...その後、find開始時刻より新しいファイルを要求しますが、いいえ終了時間以降:

find . -type f  -newer /tmp/start-time  ! -newer /tmp/end-time

一緒に入れてください:

touch -t 201902210000 /tmp/start-time
touch -t 201902212359.59 /tmp/end-time
find . -type f -newer /tmp/start-time  ! -newer /tmp/end-time -name '*.xml' -exec grep JMS111 /dev/null {} +
rm /tmp/start-time /tmp/end-time

その後、名前が正しい時間範囲で終わるファイルを見つけて、.xmlそのファイル名をgrep一度にできるだけ多く渡します。/dev/nullgrepが検索する「ファイル」をファイル名find(存在する場合)と一緒に追加しました。これにより、一致するファイルが1つしかない場合は、一致するgrepファイル名が報告されるように強制されます(/dev/nullは一致しないため報告されないため)。

出力はファイル名とこれらのファイルの一致する行になります。

おすすめ記事