Ответы:
Я почти уверен, что -Rфлаг работает - он всегда так и есть для меня. То, что не сработает, и то, что сбило меня с толку в начале использования командной строки, это использование *в каталоге со скрытыми файлами / каталогами. Так делать
$ chown -R /home/user/*
не будет делать скрытые файлы и каталоги. Однако, если вы последуете с
$ chown -R /home/user/.[^.]*
тогда вы будете делать все скрытые файлы, (но не .или ..как /home/user/.*будет делать). Сказав все это, я ожидал бы
$ chown -R /home/user
чтобы получить все скрытые файлы и каталоги внутри /home/user- хотя это, конечно, также изменит права доступа к самому каталогу, что может не соответствовать вашим ожиданиям.
chown nginx:nginx -R /path/to/.[^.]*и это только изменило владение скрытыми файлами .dot. не все.
*и следовать им, .[.^]*чтобы получить все файлы.
я считаю, что следующая команда должна работать для этого
chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
"chown -R" работает, но альтернативой будет использование find.
find /path/to/dir -exec chown USER {} \;
+вместо -exe в ;качестве терминатора для -exec будет более эффективным, так как будет использовать минимально необходимое число вилок для сгущения вместо одного разветвления на файл / каталог
Использование для цикла с ls -Aпараметром, мы можем найти все скрытые файлы и директории исключить .и ..затем изменить владельца для всех скрытых файлов и каталогов.
for i in `ls -A | grep "^\."`;do chown -R user:group $i;done
Используйте xargsопцию сls -A
ls -A | grep "^\." | xargs chown user:group
Для получения более подробной информации нажмите здесь и посетите мой сайт
Кроме того, если вы похожи на меня, вы, вероятно, будете использовать chown в основном из текущего каталога. Я привык работает это следующим образом : chown rails.rails -R *. Простое изменение звездочки на точку (сокращение от текущего каталога), например, так: chown rails.rails -R .ввод всех скрытых каталогов.
chownбудет работать со скрытыми файлами и каталогами. В следующем примере мы изменим владельца пользователя и группы для всех файлов в ~/some/folder. Все файлы включают в себя все скрытые файлы (например .bashrc, .profileи т. Д.) И папки на ~/some/folderуровне и ниже. В частности, обратите внимание, что мы не хотим менять владельца ~/some, и поэтому мы исключим файл ~/some/..из изменений владельца.
$ cd ~/some/folder
$ sudo chown -R usrname:grpname .
$
Вы могли бы сделать что-то вроде
for i in `ls -A`;do chown -R user:group $i;done
Символ -A( заглавная A) важен, поскольку исключает «.» а также '..'
chownкаталогом имеет побочный эффект: вы изменяете права доступа к самому каталогу, а также ко всему его содержимому, что может быть, а может и не быть тем, что вы хотите.