過去2分間に変更された、特定の文字列を含むファイルをホームディレクトリで検索しています。このコマンドで試しました:
find -type d -mmin -2 -ls | grep -Ril "mystring"
動作しているように見えますが、2分前に最後に変更された文字列を含むファイルではなく、指定された文字列を含むファイルのみを出力するようです。コマンドの最初の部分が実行されていないようです。
承認された回答:
あなたはあなた自身の提案で良い試みをしました
find -type d -mmin -2 -ls | grep -Ril "mystring"
これにより、ディレクトリが識別されます(-type d )ファイルではなく、過去2分以内に変更されたもの(-type f )。 -lsの出力を配管する grepへ 通常、生成されたファイル名でmystringを検索します。 。ただし、この場合、-R フラグはgrepの動作を変更します また、ファイル名のリストを無視し、代わりに現在のディレクトリ以下のすべてのファイルを検索します。
それでは、問題を2つの部分に分けましょう
-
ホームディレクトリで過去2分間に最後に変更されたファイルを検索する
find ~ -type f -mmin -2 -
特定の文字列を含む[ファイル]
grep -Fl 'certain String' {files...}
今、あなたはそれらをまとめる必要があります。 {} findによって生成されたファイル名のプレースホルダーです 手順1から、末尾の+ {}であることを示します 複数回繰り返すことができます 、つまり複数のファイル名
find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +
grepの変更 echo grepへ findによって実行されているものが表示されます 指図;これは便利なデバッグ手法になる可能性があります:
find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +
man findの実行を検討してください およびman grep -Fなどのさまざまなオプションを確認する および-l grep -Flで 、そうでなければ、設定した演習から何も学習していません。答えをコピーしているだけです。