Как изменить и скрыть скрытые файлы в Linux?

33

Как выполнить рекурсивно chmodили chownдля скрытых файлов?

sudo chmod -R 775 * не работает со скрытыми файлами.

То же самое касается sudo chown -R user:group.

ничего-специальное здесь
источник

Ответы:

35

Если вы в порядке и chmod'ing текущий каталог, сделайте это и позвольте -Rсделать тяжелую работу. -Rне игнорирует скрытые файлы.

sudo chmod -R 775 .
Джон Кугельман поддерживает Монику
источник
14
Это ( * .*) не самый безопасный способ сделать это. В частности, он будет возвращаться в родительский каталог, что означает, что он chmodтакже является родным по текущему каталогу. Правильный путь будет * ..?* .[^.]*или, что еще лучше (учитывая, что подстановочные знаки могут не совпадать ни с одним файлом) $(ls -A).
jpalecek
1
@jpalecek: вывод lsне разборчив; пытаясь разобрать это напрашивается на неприятности. Правильный подход заключается в использовании оболочки оболочки.
Скотт Северанс
Несмотря на то, что в Linux у вас есть возможность изменить порядок аргументов для chmod, при выполнении сценариев x-plat между linux и OS X, этот порядок вы должны использовать, например, sudo chmod 775 -Rсойти с ума, поэтому придерживайтесь этого ответа ,
kayleeFrye_onDeck
35

* по умолчанию не включает скрытые файлы, но если вы находитесь в bash, вы можете сделать это с помощью:

shopt -s dotglob

Подробнее об этом читайте в builtinруководстве Bash :

Если установлено, Bash включает имена файлов, начинающиеся с `. ' в результатах расширения имени файла.

Это также позволит *включить скрытые файлы.

chmod -R 775 *

Отключить его с помощью:

shopt -u dotglob
slhck
источник
2
Как это сделать в zsh?
ничего особенного - здесь
2
Вы используете (D)классификатор chmod -R 775 *(D)
globbing
2

Другим вариантом является использование findмне нравится, так как вы можете иметь очень мелкозернистый контроль над ним.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

Единственный недостаток - это findразный синтаксис в разных версиях.

RedX
источник
2

Все файлы в текущем каталоге, рекурсивно, включая скрытые файлы:

chmod 755 -R ./* ./.[!.]*

Все файлы в текущем каталоге, не рекурсивно, включая скрытые файлы:

chmod 755 ./* ./.[!.]*

Это не изменит имя файла исключения, начиная с 2 точек, например, "./..thisonescapesunharmed.txt"

Кроме того, будьте осторожны, чтобы не удалить бит «x», иначе все ваши каталоги не будут доступны (нужно, чтобы бит x записывался в каталог).

Запомните это предупреждение: никогда не используйте голое, *а ./*вместо этого.

Чтобы избежать проблем с настройкой разрешений для каталогов, используйте findвместо этого.

find . -type f -exec chmod `VALUE` {} \;
Доктор Беко
источник