過去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
で 、そうでなければ、設定した演習から何も学習していません。答えをコピーしているだけです。