Forumchmod nur auf Verzeichnisse anwenden
Martin Zeller – Freitag, 25. Februar 2005 18:32 Uhr

Hi,
ich hätte eine Frage: Ich habe eine ziemlich verschachtelte
Verzeichnisstruktur und will nur die Rechte der Ordner oder der Dateien
ändern.
Ein
“chmod -R 770 /Verzeichnis”
ändert die Rechte von den Verzeichnissen und den Dateien.
Wie stell ich es an das nur die Verzeichnisse-Rechte geändert werden?

Der Schmöker “Linux in a Nutshell” gibt kein Aufschluß darüber oder ich
interpretiere das geschriebene falsch und so wie ich “man chmod” ansehe
ist da auch nichts brauchbares. Bin mir aber nicht sicher wegen Englisch
Probs.

Bei Verzeichnissen deren Inhalt die Dateien Dateiendungen haben bin ich
mit
“chmod -R 660 test/*/*/*/*.*”
ans Ziel gekommen aber was mach ich wenn keine Dateiendungen vorhanden
sind?

Martin

1 Antwort
Matthias Bläsing – Freitag, 25. Februar 2005 19:42 Uhr

Ein fröhliches

Verzeichnisse:
find -type d -exec chmod {} \;

Verzeichnisse:
find -type f -exec chmod {} \;

sollte helfen – und find kann noch viel, viel mehr!

Martin Zeller – Freitag, 25. Februar 2005 20:08 Uhr

Hi Matthias,
ja, sieht gut aus und es Funktioniert aber könntest du mir das Kommando etwas
erklären.
soweit denke ich mir das
-type f = findet alle Dateien im Pfad
-exec = übergibt das gefundene an das folgende Programm

aber was macht {} \;

Martin

Murphy – Freitag, 25. Februar 2005 21:27 Uhr

{} setzt an dieser Stelle den Namen des gefundenen Eintrags ein, \; schließt das mit -exec begonnene Kommando, das für jeden gefundenen Eintrag ausgeführt wird, ab. Ich meine übrigens daß das zweite “Verzeichnisse:” in Matthias’ Post eigentlich “Files:” heißen müßte, denn -type f sucht nur nach Dateien, -type d nur nach Verzeichnissen.
Für dich wäre außerdem das Kommando man find von Interesse.

Martin Zeller – Samstag, 26. Februar 2005 06:59 Uhr

Hi,
noch eine Frage: warum funktioniert in diesem Fall | (Pipe) nicht warum muss
es -exec sein? (mit Pipe kommt eine Fehlermeldung)

Hab mir find in “Linux in a Nutshell” angesehn, sind 5 Seiten.

Martin

Florian E.J. Fruth – Samstag, 26. Februar 2005 17:02 Uhr

mit pipe geht auch jedoch brauchst du dann xargs:

Verzeichnisse:
find -type d | xargs -n1 chmod

Verzeichnisse:
find -type f | xargs -n1 chmod

“xargs -n1” nimmt den output von find und führt ihn zeilen weise mit den restlichen argumenten aus (hier wär das “chmod “

Ole Tange – Dienstag, 03. August 2010 23:08 Uhr

The use of xargs may be dangerous. See here why http://en.wikipedia.org/wiki/Xargs#The_separator_problem

Consider using GNU Parallel http://www.gnu.org/software/parallel/ instead.

Watch the intro video to GNU Parallel at http://www.youtube.com/watch?v=OpaiGYxkSuQ