Як мені рекурсивно виконувати chmod
або chown
для прихованих файлів?
sudo chmod -R 775 *
не працює на прихованих файлах.
Те ж саме стосується sudo chown -R user:group
.
Як мені рекурсивно виконувати chmod
або chown
для прихованих файлів?
sudo chmod -R 775 *
не працює на прихованих файлах.
Те ж саме стосується sudo chown -R user:group
.
Відповіді:
Якщо ви все добре, також chmod'ing поточного каталогу, зробіть це і дозвольте -R
зробити важкий підйом. -R
не ігнорує приховані файли.
sudo chmod -R 775 .
ls
непарний; намагаючись розібратися, це просить неприємностей. Правильний підхід - використовувати обшивку шкаралупи.
sudo chmod 775 -R
підуть вниз, тому дотримуйтесь цієї відповіді .
*
не включає приховані файли за замовчуванням, але якщо ви знаходитесь в bash, ви можете зробити це за допомогою:
shopt -s dotglob
Детальніше про це читайте в builtin
посібнику з bash :
Якщо встановлено, Bash містить імена файлів, що починаються з '.' в результатах розширення імені файлів.
Це призведе і до *
прихованих файлів.
chmod -R 775 *
Вимкніть його за допомогою:
shopt -u dotglob
zsh
?
(D)
класифікатор chmod -R 775 *(D)
Ще один варіант - використовувати find
мені це подобається, оскільки ви можете мати дуже тонкий зернистий контроль над ним.
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
Єдиним недоліком є те, що find
в різних версіях є синтаксис.
Усі файли в поточному каталозі, рекурсивно, включаючи приховані файли:
chmod 755 -R ./* ./.[!.]*
Усі файли в поточному каталозі, не рекурсивно, включаючи приховані файли:
chmod 755 ./* ./.[!.]*
Це не змінить назву файлу винятку, починаючи з 2 крапок, наприклад, "./..thisonescapesunharmed.txt"
Крім того, будьте обережні, щоб не видаляти "x" біт, інакше всі ваші каталоги будуть недоступні (для отримання CD-коду в dir потрібен біт x).
Пам'ятайте це попередження: ніколи не використовуйте голо, *
а ./*
замість цього.
Щоб уникнути проблем із налаштуванням дозволів на каталоги, використовуйте find
замість цього.
find . -type f -exec chmod `VALUE` {} \;
* .*
) не найбезпечніший спосіб зробити це. Зокрема, він повторюється у батьківський каталог, а це означає, що вінchmod
також є побратимами поточного каталогу. Правильний спосіб був би* ..?* .[^.]*
, а ще краще (враховуючи, що підстановочні знаки можуть не відповідати жодним файлам)$(ls -A)
.