Christian Seiler: chmod, chown und chgrp nur auf verzeichnisse anwenden

Beitrag lesen

Hallo Cruz,

Und jetzt sollen der owner und die group alle Dateien und Verzeichnisse beschreiben dürfen, also muss ich allen Dateien 664 und allen Verzeichnissen 775 geben. Wie kriege ich das mit nur 2 Kommandos hin?

find /neu -type d -print0 | xargs -0 chmod 0775
find /neu -type f -print0 | xargs -0 chmod 0664

Zur Erläuterung: find sucht im Dateisystem nach Dateien. Es erwartet sowohl einen Parameter, der sagt, wo die Suche losgehen soll, als auch weitere Parameter, die das Verhalten bestimmen. Im einzelnen:

find /neu -type d -print0

/neu: Dort soll die Suche anfangen
-type d: Es soll nach Verzeichnissen gesucht werden
-print0: find soll die Ergebnisse mit 0-bytes getrennt ausgeben

Die Ausgabe von find wird bei obigen Befehlen per Pipe (|) an xargs weitergeleitet. xargs wandelt die Eingabe in Parameter des Befehls, der dahinter steht. Ein

echo test tester | xargs ls

ist folglich identisch mit

ls test tester

Folglich macht der Befehl

xargs -0 chmod 0775

folgendes:

-0: Sagt xargs, dass die Eingabe mit 0-bytes getrennt daherkommt (die Trennung mit 0-Bytes ist deswegen praktisch, weil man sich dann irgendwelche Leerzeichensonderbehandlungskramsereien sparen kann)

chmod 0775: Der Befehl, an den die Eingabe als Parameter angehängt werden sollen.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup