Suche nach Dateien, die eine Zeichenfolge enthalten, und liste ihre Namen sortiert nach dem Änderungsdatum auf

Suche nach Dateien, die eine Zeichenfolge enthalten, und liste ihre Namen sortiert nach dem Änderungsdatum auf

Ich verwende diesen Befehl, um alle Dateien in einem Verzeichnis zu finden, die eine bestimmte Zeichenfolge enthalten:

grep -lir "string" path_to directory

Beispiel

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

Dieser Befehl zeigt alle Dateien im angegebenen Verzeichnis an, die die Zeichenfolge „Benutzer“ enthalten. Ich möchte sie jedoch nach absteigendem Änderungsdatum sortieren; vom neuesten zum ältesten.

Irgendeine Hilfe?

Antwort1

Zuerst verwenden wir die ZOption, dann erfasst am anderen Ende xargs mit der Option -0 die Dateinamen, führt sie aus, sortiert und entfernt die Zeitinformationen, um eine sortierte Liste mit den neuesten zuerst anzuzeigen.

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

Antwort2

Mit zsh:

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

Dies verwendetGlob-Qualifikationum nur die regulären Dateien auszuwählen ( .), die enthalten string(also die Glob-Ergebnisse, für die der Ausdruck e_'grep -qi "string" $REPLY'_zurückgibt true) und omsortiert dann die endgültigen Ergebnisse nach mtime(neueste zuerst). Entfernen Sie das, Dwenn Sie nicht nach versteckten Dateien suchen möchten.

verwandte Informationen