Ich suche in meinem Home-Verzeichnis nach Dateien, die in den letzten zwei Minuten geändert wurden und die ebenfalls eine bestimmte Zeichenfolge enthalten. Ich habe es mit diesem Befehl versucht:
find -type d -mmin -2 -ls | grep -Ril "mystring"
Es scheint zu funktionieren, aber anscheinend druckt es nur die Dateien mit der angegebenen Zeichenfolge und nicht die Dateien, die zuletzt vor 2 Minuten geändert wurden und die Zeichenfolge enthalten. Anscheinend wird der erste Teil des Befehls nicht ausgeführt.
Akzeptierte Antwort:
Sie hatten einen guten Versuch mit Ihrem eigenen Vorschlag
find -type d -mmin -2 -ls | grep -Ril "mystring"
Dies hätte Verzeichnisse identifiziert (-type d
), die in den letzten zwei Minuten geändert wurden, und nicht Dateien (-type f
). Weiterleitung der Ausgabe von -ls
zu grep
hätte normalerweise die generierten Dateinamen nach mystring
durchsucht . Allerdings in diesem Fall das -R
Flag ändert das Verhalten von grep
und es ignoriert Ihre Liste mit Dateinamen und durchsucht stattdessen jede Datei im und unterhalb des aktuellen Verzeichnisses.
Lassen Sie uns das Problem also in zwei Teile aufteilen
-
Suchen Sie nach zuletzt geänderten Dateien in den letzten 2 Minuten in Ihrem Home-Verzeichnis
find ~ -type f -mmin -2
-
[Dateien] die einen bestimmten String enthalten
grep -Fl 'certain String' {files...}
Jetzt müssen Sie sie zusammenfügen. Der {}
ist ein Platzhalter für die von find
generierten Dateinamen aus Schritt 1 und das nachgestellte +
gibt an, dass der {}
kann mehrfach wiederholt werden , also mehrere Dateinamen
find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +
grep
ändern zu echo grep
zeigt Ihnen, was von find
ausgeführt wird Befehl; Dies kann eine nützliche Debugging-Technik sein:
find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +
Bitte erwägen Sie, man find
auszuführen und man grep
um herauszufinden, was die verschiedenen Optionen sind, wie zum Beispiel -F
und -l
in grep -Fl
, da Sie sonst nichts aus der vorgegebenen Übung lernen; Sie kopieren nur eine Antwort.