Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Ozelot
- Beiträge: 1515
- Registriert: 18.11.2007 09:52:58
Beitrag
von Ozelot » 05.09.2010 15:41:09
Ich will rekursiv für jede Datei in einem Verzeichnis ein Programm abarbeiten lassen. Mit find bekomme ich auch eine Liste aller Dateien, aber
reißt natürlich Dateinamen auseinander, wenn sie Leerzeichen enthalten. Wie kann ich das verhindern?
-
Liffi
- Beiträge: 2345
- Registriert: 02.10.2004 01:33:05
Beitrag
von Liffi » 05.09.2010 19:09:30
Ozelot hat geschrieben:Ich will rekursiv für jede Datei in einem Verzeichnis ein Programm abarbeiten lassen. Mit find bekomme ich auch eine Liste aller Dateien, aber
reißt natürlich Dateinamen auseinander, wenn sie Leerzeichen enthalten. Wie kann ich das verhindern?
Z.B. mit xargs
-
pluvo
Beitrag
von pluvo » 05.09.2010 19:18:14
Du kannst den Befehl auch bei
find unterbringen. Einige Beispiele:
Code: Alles auswählen
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
Code: Alles auswählen
find Ordner/ -type f -exec sha256sum {} \; > .SHA256SUMS
-
Ozelot
- Beiträge: 1515
- Registriert: 18.11.2007 09:52:58
Beitrag
von Ozelot » 06.09.2010 00:17:40
Ja, an xargs oder exec hatte ich auch gedacht. Aber ich will nicht einen einzelnen Befehl, sondern ein ganzes Programm, das ich sukzessive komplizierter machen werde, auf jeden Eintrag anwenden (Ich will mir eine eigene angepaßte Volltextsuche bauen).
Besser wäre daher, wenn ich den Eintrag innerhalb einer Schleife in einer Variable zur Verfügung hätte. Oder kann ich irgendwie eine Funktion definieren, die ich mit exec/xargs aufrufe? Dann hätte ich ja den gleichen Effekt.
-
pluvo
Beitrag
von pluvo » 06.09.2010 00:25:57
Ozelot hat geschrieben:Aber ich will nicht einen einzelnen Befehl, sondern ein ganzes Programm, das ich sukzessive komplizierter machen werde, auf jeden Eintrag anwenden
Du kannst doch dein kompliziertes Programm unter
/usr/local/bin ablegen. Und das rufst du einfach mit „
find“ & „
-exec“ auf.
-
Ozelot
- Beiträge: 1515
- Registriert: 18.11.2007 09:52:58
Beitrag
von Ozelot » 06.09.2010 10:55:15
Ja, das ginge natürlich.
Es gibt also keine Möglichkeit, das innerhalb eines einzigen Skripts zu haben?
Verlangsamt sich die Ausführung sehr, wenn ich die Sache auf zwei Skripte verteile?
-
diggerchen
- Beiträge: 115
- Registriert: 15.01.2005 22:35:26
Beitrag
von diggerchen » 06.09.2010 13:30:13
Wie wär's denn mit sowas:
Code: Alles auswählen
find . -type f | while read a; do
# mache hier irgendwas mit dem Dateinamen...
echo $a
done
Da haste in $a immer den ganzen Dateinamen inkl. Leerzeichen.
-
Ozelot
- Beiträge: 1515
- Registriert: 18.11.2007 09:52:58
Beitrag
von Ozelot » 06.09.2010 13:34:21
Juhuu - genau das meinte ich. Danke!
-
rendegast
- Beiträge: 15041
- Registriert: 27.02.2006 16:50:33
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von rendegast » 06.09.2010 17:34:59
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")