web-dev-qa-db-ja.com

文字列を含むファイルを検索し、変更日でソートされた名前を一覧表示します

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

grep -lir "string" path_to directory

grep -lir "users" /var/www/mysite

このコマンドは、文字列 'users'を含む指定されたディレクトリ内のすべてのファイルを表示します。ただし、変更日を降順に並べ替えたいと思います。最新から最古へ。

何か助けはありますか?

2

最初にZオプションを使用し、次に-0オプションを指定したxargsがファイル名をキャッチして統計し、タイミング情報を並べ替えて削除し、並べ替えられた最新の最初のリストを表示します。

 grep -Zlir users /var/www/mysite | xargs -0 -r stat --format='%Y+%n' | sort -t+ -k 1,1nr | cut -d+ -f2-
4
user218374

zshの場合:

print -rl ./**/*(.De_'grep -qi "string" $REPLY'_om)

これは glob qualifiers を使用して、stringを含む通常のファイル(.)のみを選択します。 (つまり、式e_'grep -qi "string" $REPLY'_trueを返すグロブの結果)そしてomを介して、最終結果をmtime(最新のものから)でソートします。隠しファイルを検索したくない場合は、Dを削除してください。

1
don_crissti