Verwenden Sie chown
rekursive Option von :
chown -R owner:group * .[^.]*
Geben Sie sowohl *
an und .[^.]*
stimmt mit allen Dateien und Verzeichnissen überein, die find
möchten. Das heute empfohlene Trennzeichen ist :
statt .
. (Wie von Justins erwähnt, mit .*
ist unsicher, da es um .
erweitert werden kann und ..
, was zu chown
führt Ändern des Eigentümers des übergeordneten Verzeichnisses und aller seiner Unterverzeichnisse.)
Wenn Sie auch den Eigentümer des aktuellen Verzeichnisses ändern möchten, kann dies vereinfacht werden zu
chown -R owner:group .
Für Befehle wie chown
die ihre eigene Rekursion haben, ist es am schnellsten, diese Option zu verwenden:
chown -R owner:group * .[^.]*
Warnung! In manchen Shells die Form chown -R owner:group * .*
ersetzt Eigentümer im Stammverzeichnis / . Weil .*
bedeutet ../../../../root, ../bin ... etc
. Alle Wege. Die am weitesten verbreitete Shell, bash , gilt nicht für .
und ..
, Erweiterungsmuster.
Es ist jedoch nützlich zu wissen, dass das Hauptproblem, das Ihre Verwendung von find
verlangsamt, ist, dass Sie chmown
aufrufen für jedes einzelne gefundene Verzeichnis und jede Datei. Es ist viel schneller zu verwenden:
find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +
wie jedes Mal chown
wird mit so vielen Parametern aufgerufen, wie in die Kommandozeile passen.
Diese Änderung funktioniert für andere Befehle, die keine eingebaute Rekursionsoption wie chown
haben , auch. Und es funktioniert (und verbessert die Geschwindigkeit) in Situationen, in denen es eine solche Rekursionsoption gibt, Sie sie aber nicht verwenden können (z. B. bei Verwendung von chmod
). , und Sie möchten nur Verzeichnisse wechseln).