chmod rekursiv nur auf Dateien ODER Verzeichnisse anwenden
Mit chmod -R xxx *
werden bekanntlich die Rechte für alle Dateien und Verzeichnisse im aktuellen Verzeichnis und allen Unterverzeichnissen gesetzt.
Was nun, wenn nur Datei- oder Verzeichnisrechte geändert werden sollen? Beispielsweise in einem Webverzeichnis klassisch die Dateien auf 644, die Verzeichnisse auf 755.
Dies ist mit folgendem Trick möglich:
Dateien:
find . -type f -print0 | xargs -0 chmod 644
Verzeichnisse:
find . -type d -print0 | xargs -0 chmod 755
Mit find werden die den Kriterien entsprechenden Dateien gesucht, also in diesen zwei Fällen entweder Dateien = Files (f) oder Verzeichnisse = Directories (d). Der Punkt besagt, das im aktuellen Verzeichnis begonnen werden soll. Das Ergebnis wird dann via xargs an chmod übergeben.
Alternativ können auch folgende Befehle verwenden werden:
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
Hier soll es aber Probleme mit Datei- und Verzeichnisnamen geben, die Leerzeichen, Anführungszeichen oder Backslashes enthalten.