CHMOD rekursiv nur auf Dateien ODER Verzeichnisse anwenden

Aus hot-chilli.net Wiki

Wechseln zu: Navigation, Suche

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 Verzeichniss 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.

Persönliche Werkzeuge