Odpowiedzi:
Jestem pewien, że -R
flaga działa - i tak zawsze dla mnie działa. Co nie zadziała i co mnie potknęło na początku korzystania z wiersza poleceń, to używanie *
w katalogu z ukrytymi plikami / katalogami. Tak robię
$ chown -R /home/user/*
nie zrobi ukrytych plików i katalogów. Jeśli jednak zastosujesz się do niego
$ chown -R /home/user/.[^.]*
wtedy zrobisz wszystkie ukryte pliki (ale nie .
lub ..
tak /home/user/.*
, jak by to zrobiło). Powiedziawszy to wszystko, oczekiwałbym
$ chown -R /home/user
aby umieścić wszystkie ukryte pliki i katalogi w środku /home/user
- choć to oczywiście zmieni również uprawnienia do samego katalogu, co może nie być tym, czego zamierzałeś.
chown nginx:nginx -R /path/to/.[^.]*
i zmieniłem tylko własność na ukryte pliki .dot. nie wszystko.
*
i postępować zgodnie z nimi, .[.^]*
aby uzyskać wszystkie pliki.
uważam, że następujące polecenie powinno działać w tym celu
chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
„chown -R” działa, ale alternatywą byłoby użycie find.
find /path/to/dir -exec chown USER {} \;
+
zamiast ;
jako terminatora -exec będzie bardziej wydajne, ponieważ użyje minimalnej potrzebnej liczby widelców do wyświetlenia zamiast jednego rozwidlenia na plik / katalog
Używając pętli for z ls -A
opcji, możemy znaleźć wszystkie ukryte pliki i katalog wykluczyć .
a ..
, a następnie zmienić właściciela wszystkich ukrytych plików i katalogu.
for i in `ls -A | grep "^\."`;do chown -R user:group $i;done
Użyj xargs
opcji zls -A
ls -A | grep "^\." | xargs chown user:group
Aby uzyskać więcej informacji, kliknij tutaj i odwiedź moją stronę
Ponadto, jeśli jesteś podobny do mnie, prawdopodobnie uruchomisz chown głównie z bieżącego katalogu. Byłem przyzwyczajony do działa to tak: chown rails.rails -R *
. Wystarczy zmienić gwiazdkę na kropkę (skrót od bieżącego katalogu) w ten sposób: chown rails.rails -R .
wyświetla wszystkie ukryte katalogi.
chown
będzie działać z ukrytymi plikami i katalogami. W poniższym przykładzie zmienimy własność użytkownika i grupy dla wszystkich plików w ~/some/folder
. Wszystkie pliki obejmuje wszystkie ukryte pliki (np .bashrc
, .profile
etc.) i foldery na tym ~/some/folder
poziomie i poniżej. Zwróć uwagę w szczególności, że nie chcemy zmieniać prawa własności ~/some
i dlatego wykluczymy plik ~/some/..
ze zmian własności.
$ cd ~/some/folder
$ sudo chown -R usrname:grpname .
$
Możesz zrobić coś takiego
for i in `ls -A`;do chown -R user:group $i;done
-A
( Kapitał A) jest ważna, ponieważ wyklucza „” i '..'
chown
w katalogu powoduje efekt uboczny polegający na zmianie uprawnień do samego katalogu, a także całej jego zawartości, co może być lub nie być tym, czego chcesz.