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 Z
Option, 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 om
sortiert dann die endgültigen Ergebnisse nach mtime
(neueste zuerst). Entfernen Sie das, D
wenn Sie nicht nach versteckten Dateien suchen möchten.