Як Chown каталог рекурсивно, включаючи приховані файли або каталоги


37

Здається, чуун із рекурсивним прапором не працюватимуть у прихованих каталогах чи файлах. Чи є для цього простий спосіб вирішення?

Відповіді:


56

Я майже впевнений, що -Rпрапор працює - для мене це завжди є. Те, що не буде працювати, і що мене спонукало на початку використання мого командного рядка, - це використання *в каталозі з прихованими файлами / каталогами. Так роблять

$ chown -R /home/user/*

не буде робити приховані файли та каталоги. Однак якщо ви дотримуєтесь цього

$ chown -R /home/user/.[^.]*

то ви будете робити все приховані файли (але не .або , ..як /home/user/.*би). Сказавши все це, я би сподівався

$ chown -R /home/user

щоб отримати всі приховані файли та каталоги всередині, /home/userхоча це, звичайно, також змінить дозволи самого каталогу, що може бути не тим, що ви задумали.


3
Виконання в chownкаталозі побічного ефекту полягає в тому, що ви змінюєте дозволи на сам каталог, а також на весь його вміст, який може бути, а може і не бути тим, що ви хочете.
wfaulk

A + працював як шарм для мене.
SuperFamousGuy

Я спробував, chown nginx:nginx -R /path/to/.[^.]*і це змінило лише право власності на .dot приховані файли. не всі.
Патрос

@wfaulk Як згадував @Hamish Downer, ви повинні виконати обидва файли *та виконати його, .[.^]*щоб отримати всі файли.
god_is_love

9

Я вважаю, що для цього повинна працювати наступна команда

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

1
-h впливати на символічні посилання замість будь-якого посилається на файл (корисний лише для систем, які можуть змінити право власності на
симпосилання

8

"chown -R" працює, але альтернативою буде пошук.

 find /path/to/dir -exec chown USER {} \;

5
зауважте, що при пошуку GNU, використання +замість ;термінатора до -exec буде більш ефективним, оскільки воно використовуватиме мінімально необхідну кількість вилок для подачі замість однієї виделки на файл / каталог
тушкуйте

3

Ви можете dotglobтимчасово змінити атрибут для розширення. файли, а потім відновити його.

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

Більше про dotglobце можна знайти тут


2

Використання для циклу з 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

Для отримання додаткової інформації натисніть тут і відвідайте мій сайт


1

Крім того, якщо ви схожі на мене, ви, ймовірно, керуєте чауном переважно з поточного каталогу. Я звик працює це наступним чином : chown rails.rails -R *. Просто змінивши зірочку на крапку (скорочується для поточного каталогу), як це: містить chown rails.rails -R .усі приховані каталоги.


2
З побічним ефектом ви змінюєте дозволи на поточний каталог, а також на весь його вміст, який може бути або не бути таким, який ви хочете.
wfaulk

1

chownпрацюватиме з прихованими файлами та каталогами. У наступному прикладі ми змінимо власність користувачів та груп для всіх файлів у ~/some/folder. Усі файли містять усі приховані файли (наприклад .bashrc, .profileтощо) та папки на ~/some/folderрівні та нижче. Зокрема, зауважте, що ми не бажаємо змінювати право власності на ~/some, і тому будемо виключати файл ~/some/..із змін власності.

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

Це працювало для мене
Клор

0

Для придушення ВСІХ файлів у поточному каталозі та підкаталогах для поточного користувача;

find . -exec chown $(whoami) {} \;

або якщо користувач не може заглушити деякі файли через обмежені дозволи;

sudo find . -exec chown $(logname) {} \;

-2

Ви могли зробити щось подібне

for i in `ls -A`;do chown -R user:group $i;done

-A( Капітал А) важливо , так як це виключає ". і ".."


Це змінить лише файли та підкаталоги у поточному каталозі, а не будь-які нижчі рівні. (Що може бути те, чого хоче ОП.) Він також розбивається на назви файлів і імен каталогів з пробілами (або вкладками).
wfaulk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.