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


Ответы:


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

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разный синтаксис в разных версиях.


2

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

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

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

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

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

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

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

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

find . -type f -exec chmod `VALUE` {} \;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.