Normalerweise verwende ich diesen Befehlsstil, grepum eine Reihe von Dateien zu überfliegen:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
Tatsächlich wird eine Liste aller Dateien auf dem System erstellt und anschließend für jede Datei grepmit den angegebenen Argumenten und dem Namen jeder Datei ausgeführt.
Das -xdevArgument sagt find, dass es andere Dateisysteme ignorieren muss - dies ist gut, um spezielle Dateisysteme wie zu vermeiden /proc. Es werden jedoch auch normale Dateisysteme ignoriert. Wenn sich Ihr / home-Ordner beispielsweise auf einer anderen Partition befindet, wird er nicht durchsucht find / /home -xdev ....
-type fbedeutet, dass nur nach Dateien gesucht wird. Verzeichnisse, Geräte und andere spezielle Dateien werden ignoriert (es wird weiterhin in Verzeichnisse umgewandelt und grepauf die darin enthaltenen Dateien angewendet - es wird nur nicht grepauf das Verzeichnis selbst angewendet , was ohnehin nicht funktioniert). Und die -HOption, ihn grepanzuweisen, immer den Dateinamen in seiner Ausgabe zu drucken.
findAkzeptiert alle Arten von Optionen zum Filtern der Dateiliste. Zum Beispiel -name '*.txt'verarbeitet nur Dateien in TXT - Endung. -size -2Mbedeutet Dateien, die kleiner als 2 Megabyte sind. -mtime -5bedeutet Dateien, die in den letzten fünf Tagen geändert wurden. Fügen Sie diese zusammen mit -a für und -o für oder hinzu und verwenden Sie '('Klammern ')', um Ausdrücke zu gruppieren (in Anführungszeichen, um zu verhindern, dass die Shell sie interpretiert). Also zum Beispiel:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Schauen man findSie sich die vollständige Liste der möglichen Filter an.
Permission deniedFehler? Haben Sie es als root oder als normaler Benutzer ausgeführt?