26

Я хочу chmod много файлов и каталогов. Поскольку x указывает список для каталогов и выполняется для обычных файлов, я хотел бы применить rw для файлов и rwx для каталогов. Возможно ли использовать только команду chmod ?

Если это не так, какой самый удобный способ?

Выполнение chmod -R 770 не возможно, так как я не хочу, чтобы обычные файлы стали исполняемыми.

3 ответа3

34

Используйте разрешение X со страницы руководства:

Биты выполнения / поиска, если файл является каталогом, или любой из битов выполнения / поиска установлены в исходном (неизмененном) режиме. Операции с разрешающим символом "X" имеют смысл только в сочетании с операционным символом «+» и игнорируются во всех других случаях.

Так что сделайте следующее:

chmod -R a-x [directory]
chmod -R a+rwX [directory]

Это удаляет бит выполнения из всех файлов и каталогов с последующим добавлением привилегий чтения и записи ко всем и привилегий выполнения только для каталогов. (Никакие обычные файлы больше не имеют бит выполнения с первого шага.)

19

Я делаю это иногда, используя одну команду find . Уродливый, но эффективный.

find /p/a/t/h \( -type d -exec chmod 755 {} \; \) -o \( -type f -exec chmod 644 {} \; \)
14

Вы также можете использовать find вместе с xargs:

find . -type f -print0 | xargs -0 chmod 666
find . -type d -print0 | xargs -0 chmod 777

где d указывает -type или irectory ф ИОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .