Chmod rekursiv nur für Dateien oder Verzeichnisse

Mit dem Befehl chmod -R 755 ./* können die Rechte von allen Dateien und Verzeichnissen im aktuellen und allen Unterverzeichnissen gesetzt werden.

Möchten wir nun jedoch die Rechte nur von Dateien oder nur von Verzeichnissen setzen hilft uns das Programm find weiter.

Im Folgenden zwei kleine Beispiele dazu.

Rechte nur bei Dateien setzen

Rechte nur bei Dateien setzen
1
find ./* -type f -exec chmod 644 {} \;

Rechte nur bei Verzeichnissen setzen

Rechte nur bei Verzeichnissen setzen
1
find ./* -type d -exec chmod 755 {} \;

Verwendung von “xargs”

Bei Datei- oder Verzeichnisnamen, die Leerzeichen, Anführungszeichen oder Backslashs enthalten, kann es zu Fehlern kommen. Um dies zu vermeiden ist zusätzlich die Verwendung von xargs zu empfehlen:

Rechte nur bei Dateien setzen mit xargs
1
find ./* -type f -print0 | xargs -0 chmod 644

Der Parameter -print0 bei bewirkt, dass find jedes gefundene Element mit einem Nullbyte abschließt. Dieses Nullbyte wird von xargs durch den Parameter -0 verwendet um die Eingaben zu trennen und richtig an chmod weiterzugeben.

Siehe auch

Für weitere Informationen zu den einzelnen Programmen siehe:

Handbücher der Programme anzeigen
1
2
3
man chmod
man find
man xargs