このコマンドを使用して、ディレクトリ内の特定の文字列を含むすべてのファイルを検索します。
grep -lir "string" path_to directory
例
grep -lir "users" /var/www/mysite
このコマンドは、指定されたディレクトリ内の文字列「users」を含むすべてのファイルを表示します。ただし、変更日の降順で、新しいものから古いものの順に並べ替えたいと考えています。
何か助けて?
答え1
まず、Z
オプションを使用し、次に、-0 オプションを指定した xargs がファイル名をキャッチして統計情報を取得し、並べ替えてタイミング情報を削除し、並べ替えられた最新のリストを表示します。
grep -Zlir users /var/www/mysite | xargs -0 -r stat --format='%Y+%n' | sort -t+ -k 1,1nr | cut -d+ -f2-
答え2
とzsh
:
print -rl ./**/*(.De_'grep -qi "string" $REPLY'_om)
これはglob 修飾子を使用すると、 を含む通常のファイル ( .
) string
(つまり、式がe_'grep -qi "string" $REPLY'_
を返すglob 結果true
) のみが選択され、その後、 によってom
最終結果が (新しい順) で並べ替えられます。隠しファイルを検索しない場合は をmtime
削除します。D