Как выполнить рекурсивно 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», иначе все ваши каталоги не будут доступны (нужно, чтобы бит x записывался в каталог).
Запомните это предупреждение: никогда не используйте голое, *
а ./*
вместо этого.
Чтобы избежать проблем с настройкой разрешений для каталогов, используйте find
вместо этого.
find . -type f -exec chmod `VALUE` {} \;
* .*
) не самый безопасный способ сделать это. В частности, он будет возвращаться в родительский каталог, что означает, что онchmod
также является родным по текущему каталогу. Правильный путь будет* ..?* .[^.]*
или, что еще лучше (учитывая, что подстановочные знаки могут не совпадать ни с одним файлом)$(ls -A)
.