Wie schaffe ich es, alle Dateien in einem Verzeichnis und in Unterverzeichnissen zu finden und einen Befehl darauf auszuführen?
Zum Beispiel,
find . -type f -name "*.txt"
findet alle txt-Dateien und:
find . -type f -name "*.txt" | gedit
sendet es an gedit, aber in einer Textdatei. Ich möchte, dass gedit alle Textdateien öffnet.
linux
command-line
xyz
quelle
quelle
{}
steht für den aktuellen Dateinamen und das Semikolon beendet gerade den Befehl. Der Backslash und die umgebenden Anführungszeichen sollen lediglich die Shell-Erweiterung verhindern.find . -type f -name "*.txt" -print0 | xargs -0 gedit
quelle
man find
oderman xargs
,/
um nach einer bestimmten Flagge zu suchen. Die Dokumentation ist recht gut, sie sollte Ihre Fragen beantworten.-print0
Gibt nach jedem Eintrag ein NULL-Zeichen aus und-0
erwartet , dass die Einträge durch ein NULL-Zeichen getrennt werden. Dies ist der sicherste Weg, mit kniffligen Namen umzugehen.