Použijte chown
Rekurzivní možnost:
chown -R owner:group * .[^.]*
Zadáním obou *
a .[^.]*
bude odpovídat všem souborům a adresářům, které find
bych. V současnosti je doporučený oddělovač :
místo .
. (Jak zdůraznil justins, pomocí .*
není bezpečné, protože jej lze rozšířit tak, aby zahrnoval .
a ..
výsledkem je chown
změna vlastnictví nadřazeného adresáře a všech jeho podadresářů.)
Pokud chcete změnit i vlastnictví aktuálního adresáře, lze to zjednodušit na
chown -R owner:group .
Pro příkazy jako chown
které mají vlastní rekurzi, je nejrychlejší použít tuto možnost:
chown -R owner:group * .[^.]*
Varování! V některých shellech tvar chown -R owner:group * .*
nahradí vlastníka v kořenovém adresáři / . Protože .*
znamená ../../../../root, ../bin ... etc
. Všechny cesty. Nicméně nejpoužívanější shell, bash , neplatí .
a ..
, rozšiřující vzory.
Je však užitečné vědět, že hlavní problém, který zpomaluje vaše používání find
je, že zavoláte chmown
v každém jednotlivém nalezeném adresáři a souboru. Používá se mnohem rychleji:
find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +
jako pokaždé chown
se volá s tolika parametry, kolik se vejde na příkazový řádek.
Tato změna funguje pro ostatní příkazy, které nemají vestavěnou možnost rekurze, jako je chown
, také. A funguje (a zvyšuje rychlost) v situacích, kdy existuje taková možnost rekurze, ale nemůžete ji použít (např. při použití chmod
a chcete změnit pouze adresáře).