Похоже, что chown с рекурсивным флагом не будет работать со скрытыми каталогами или файлами. Есть ли простой способ обхода этого?
Я почти уверен -R
flag действительно работает - по крайней мере, всегда для меня. Что не сработает и что меня сбило с толку в начале использования командной строки, так это использование *
в каталоге со скрытыми файлами / каталогами. Так поступаем
$ chown -R /home/user/*
не будет делать скрытые файлы и каталоги. Однако, если вы последуете за ним
$ chown -R /home/user/.[^.]*
тогда вы сделаете все скрытые файлы (но не .
или ..
так как /home/user/.*
сделал бы). Сказав все это, я ожидал
$ chown -R /home/user
чтобы получить все скрытые файлы и каталоги внутри /home/user
- хотя это, конечно, также изменит разрешения самого каталога, что может быть не тем, что вы планировали.
Я считаю, что для этого должна работать следующая команда
chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
"chown -R" работает, но в качестве альтернативы можно использовать find.
find /path/to/dir -exec chown USER {} \;
Вы можете изменить dotglob
атрибут временно расширить. файлы, а затем верните его.
shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob
Еще dotglob
может быть найден Вот
Использование цикла for с 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 .
$
Чтобы выбрать ВСЕ файлы в текущем каталоге и подкаталогах для текущего пользователя;
find . -exec chown $(whoami) {} \;
или если пользователь не может выбрать некоторые файлы из-за ограниченных разрешений;
sudo find . -exec chown $(logname) {} \;
Вы могли бы сделать что-то вроде
for i in `ls -A`;do chown -R user:group $i;done
В -A
(капитал A) важен, поскольку он исключает "." и '..'