Eine find -exec
Antwort ist gut, leidet jedoch unter dem normalerweise irrelevanten Mangel, dass für jede einzelne Datei ein separater Unterprozess erstellt wird. Es ist jedoch perfekt funktionsfähig und funktioniert nur dann schlecht, wenn die Anzahl der Dateien sehr groß wird. Mit xargs
Willen Batch auf die Dateinamen in große Gruppen vor einem Teilprozess für die laufende Gruppe von Dateien.
Sie müssen nur darauf achten, dass Sie bei der Verwendung xargs
Dateinamen mit eingebetteten Leerzeichen, Zeilenumbrüchen oder anderen Sonderzeichen richtig behandeln.
Eine Lösung, die diese beiden Probleme löst, ist (vorausgesetzt, Sie haben eine anständige find
und xargs
Implementierung):
find . -type f -print0 | xargs -0 chmod 644
Die -print0
Ursachen, find
um die Dateinamen in seinem Ausgabestream mit einem NUL-Zeichen (anstelle eines Leerzeichens) zu beenden, und die Ursachen , die -0
darauf xargs
hinweisen, dass dies als Eingabeformat zu erwarten ist.