Eine find -exec
Antwort ist eine gute, aber sie leidet unter dem normalerweise irrelevanten Mangel, dass sie einen separaten Unterprozess für jede einzelne Datei erstellt. Allerdings ist es perfekt funktional und funktioniert nur schlecht, wenn die Anzahl der Dateien wirklich groß ist. Die Verwendung von xargs
wird die Dateinamen in große Gruppen aufteilen, bevor ein Unterprozess für diese Gruppe von Dateien ausgeführt wird.
Sie müssen nur darauf achten, dass Sie bei der Verwendung von xargs
Dateinamen mit eingebetteten Leerzeichen, Zeilenumbrüchen oder anderen Sonderzeichen korrekt verarbeiten.
Eine Lösung, die beide diese Probleme lösen, ist (vorausgesetzt, Sie ein anständiges genug find
und xargs
Implementierung):
find . -type f -print0 | xargs -0 chmod 644
Die -print0
find
Ursachen der Dateinamen auf seinem Ausgangsstrom mit einem NUL-Zeichen zu beenden (statt ein Leerzeichen) und die -0
bis xargs
lässt wissen, dass es das als Eingabeformat erwarten sollte.
Dies sollte in ServerFault gefragt werden – MoshiBin
wirklich chmod sollte zwischen Dateien, Links und Ordner auf seiner eigenen unterscheiden können. – Xeoncross