Вот скрипт, который вы можете вызвать, передав режим в качестве первого аргумента и одно или несколько имен каталогов в качестве последующих аргументов. В Linux, если вы не передадите имя каталога, оно будет таким, как если бы вы его передали .
(текущий каталог). Назовите этот скрипт rchmodf
, сделайте его исполняемым ( chmod a+rx /path/to/rchmodf
) и поместите его где-нибудь на свой $PATH
.
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
Пояснения: mode=$1; shift
устанавливает переменную mode
в первый аргумент скрипта и удаляет этот первый аргумент из списка. "$@"
расширяется до списка всех аргументов.
Если хотите, вы можете создать скрипт, который принимает как режим каталога, так и режим файлов.
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
Обратите внимание, что 744 не является полезным режимом файла; 644 (доступный для записи и читаемый всем) и 755 (также исполняемый во всем мире) встречаются гораздо чаще. Кроме того, изменение каждого файла в дереве, чтобы быть исполняемым или не быть исполняемым, редко полезно; Вы, вероятно, захотите вызвать этот сценарий с аргументами вроде +rX
(прописные X
, чтобы установить исполняемый бит только для каталогов и для файлов, которые уже исполняются). В самом деле, X
символьный режим, вероятно , что вы были после того, как с этими скриптами: chmod -R +rX .
.
С bash или zsh есть другой способ рекурсивного действия, но только для каталогов. Для bash вам нужна версия 4 и запускать shopt -s globstar
первым.
chmod a+rx **/*/
В Zsh, вы можете действовать на файлы только суффиксов (.)
: chmod a+r **/*(.)
.
Я передам вопрос о Наутилусе.
Скрипт связан с user23538, надеюсь, вы не возражаете.
Я попробовал это, и это работает хорошо. Обратите внимание, что если вы используете. в качестве аргумента пути (запускайте его в том же каталоге, где расположен скрипт), он фактически меняет права доступа к собственному файлу сценариев на 644, поэтому поместите его в каталог выше.
источник
Я написал сценарий, который в основном выполняет все вышеперечисленное, но также предоставляет некоторую гибкость для параметров командной строки (права доступа к каталогу и / или файлу, или исключает оба, он автоматически сбрасывает все до 755-644). Он также проверяет несколько сценариев ошибок.
http://bigfloppydonkeydisk.blogspot.com.au/2012/09/recursively-chmod-only-files-or.html
источник