私は特定の文字列を含み、過去2分間に修正されたファイルを見つけるために私のホームディレクトリを検索しています。私は次のコマンドを試しました。
find -type d -mmin -2 -ls | grep -Ril "mystring"
動作しているように見えますが、内部的に与えられた文字列を含むファイルのみを印刷し、2分前に最後に変更され、その文字列を含むファイルは印刷されません。コマンドの最初の部分が実行されていないようです。
ベストアンサー1
あなたの提案に従って良い試みをしました。
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...}
今、それらを一つにまとめなければなりません。手順 1{}
で生成されたファイル名のプレースホルダーで、find
尾を繰り返すことができること+
を示します。{}
どんどんつまり、複数のファイル名
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