Як мені рекурсивно виконувати 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).