文字列を含むファイルを検索し、変更日順に名前を一覧表示します。

文字列を含むファイルを検索し、変更日順に名前を一覧表示します。

このコマンドを使用して、ディレクトリ内の特定の文字列を含むすべてのファイルを検索します。

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

関連情報