Как выполнить рекурсивно chmod
или chown
для скрытых файлов?
sudo chmod -R 775 *
не работает со скрытыми файлами.
То же самое касается sudo chown -R user:group
.
Если вы в порядке и chmod'ing текущий каталог, сделайте это и позвольте -R
сделать тяжелую работу. -R
не игнорирует скрытые файлы.
sudo chmod -R 775 .
* .*
) не самый безопасный способ сделать это. В частности, он будет возвращаться в родительский каталог, что означает, что онchmod
также является родным по текущему каталогу. Правильный путь будет* ..?* .[^.]*
или, что еще лучше (учитывая, что подстановочные знаки могут не совпадать ни с одним файлом)$(ls -A)
.ls
не разборчив; пытаясь разобрать это напрашивается на неприятности. Правильный подход заключается в использовании оболочки оболочки.sudo chmod 775 -R
сойти с ума, поэтому придерживайтесь этого ответа ,*
по умолчанию не включает скрытые файлы, но если вы находитесь в bash, вы можете сделать это с помощью:Подробнее об этом читайте в
builtin
руководстве Bash :Это также позволит
*
включить скрытые файлы.Отключить его с помощью:
источник
zsh
?(D)
классификаторchmod -R 775 *(D)
Другим вариантом является использование
find
мне нравится, так как вы можете иметь очень мелкозернистый контроль над ним.Единственный недостаток - это
find
разный синтаксис в разных версиях.источник
Все файлы в текущем каталоге, рекурсивно, включая скрытые файлы:
Все файлы в текущем каталоге, не рекурсивно, включая скрытые файлы:
Это не изменит имя файла исключения, начиная с 2 точек, например,
"./..thisonescapesunharmed.txt"
Кроме того, будьте осторожны, чтобы не удалить бит «x», иначе все ваши каталоги не будут доступны (нужно, чтобы бит x записывался в каталог).
Запомните это предупреждение: никогда не используйте голое,
*
а./*
вместо этого.Чтобы избежать проблем с настройкой разрешений для каталогов, используйте
find
вместо этого.источник