[gelöst] Verzeichnisse rekursiv durchlaufen
[gelöst] Verzeichnisse rekursiv durchlaufen
Hallo!
Möchte für alle Dateien unterhalb eines bestimmten Verzeichnisses eine Operation durchführen.
Bei chmod gibt's für sowas ja den Parameter -R, aber wie mache ich das in meinem Falle?
Muss ich die Rekursion dafür selbst implementieren? Und falls ja: Wie sieht soetwas aus?
Grüße
Möchte für alle Dateien unterhalb eines bestimmten Verzeichnisses eine Operation durchführen.
Bei chmod gibt's für sowas ja den Parameter -R, aber wie mache ich das in meinem Falle?
Muss ich die Rekursion dafür selbst implementieren? Und falls ja: Wie sieht soetwas aus?
Grüße
Zuletzt geändert von mod3 am 06.05.2014 16:18:57, insgesamt 1-mal geändert.
Re: Verzeichnisse rekursiv durchlaufen
Ein Beispiel für alle mp3-Dateien unterhalb des momentanen Verzeichnisses
das allerdings glaube ich an Leerzeichen im Pfad scheitert. Ich bin aber schon gespannt was noch für Vorschläge kommen ☺
Code: Alles auswählen
find . -name "*.mp3" | xargs meinBefehl
Re: Verzeichnisse rekursiv durchlaufen
Code: Alles auswählen
find . -name "*.mp3" -exec mein_befehl '{}' \;
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." (C.A.R. Hoare)
Re: Verzeichnisse rekursiv durchlaufen
Ok und wie mache ich es für alle Dateien, egal welchen Typs?
Re: Verzeichnisse rekursiv durchlaufen
In die Manpage gucken? Wenn du nicht auf den Namen matchen willst, lass' den Parameter dazu doch weg...mod3 hat geschrieben:Ok und wie mache ich es für alle Dateien, egal welchen Typs?
Letzendlich willst du vermutlich so etwas wie
Code: Alles auswählen
$ find /path -type f -exec 'echo {} >/dev/null' \;
oder
$ find /path -type f -print0 | xargs -0 grep -nI suchstring
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Verzeichnisse rekursiv durchlaufen
Hm, stehe gerade auf dem Schlauch:
Bringt mir:
Und das für jede einzelne Datei unterhalb von /pfad.
Warum das? Lesbar sind die Dateien doch offenbar?
Code: Alles auswählen
find /pfad -type f -exec 'cat {}' \;
Code: Alles auswählen
find: "cat /pfad/datei.abc": Datei oder Verzeichnis nicht gefunden
Warum das? Lesbar sind die Dateien doch offenbar?
Re: Verzeichnisse rekursiv durchlaufen
Du willst vermutlich dasda machen:
Also das Programm "cat" auf die Datei "/pfad/datei.abc" ausführen und nicht das Programm "cat /pfad/datei.abc" ausführen. (Programme mit leerzeichen im namen gibt's nicht so viele )
Code: Alles auswählen
find /pfad -type f -exec cat '{}' \;
rot: Moderator wanne spricht, default: User wanne spricht.
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Verzeichnisse rekursiv durchlaufen
Läst sich optimieren (hängt vom exec-Befehl ab, er muss mehrere Argumente auf seiner Kommandozeile zulassen):kuerbis hat geschrieben:Nachteile: Für jede Datei wird ein neuer Prozess gestartet und längere Befehlsketten wie Pipelines sind damit nur eingeschränkt möglich.
-exec Befehl {} +
Diese Variante der Aktion -exec führt den angegebenen Befehl für die ausgewählten Dateien aus, aber die Befehlszeile wird durch das Anhängen jeder ausgewählten Datei an das Ende gebildet; die Gesamtzahl der Befehlsaufrufe wird viel geringer sein, als die Anzahl passender Dateien. Die Befehlszeile wird auf die gleiche Weise wie bei xargs gebildet. Innerhalb des Befehls ist nur eine Instanz von »{}« erlaubt. Der Befehl wird im Startverzeichnis ausgeführt.