Aqui está um script que você pode chamar passando o modo como o primeiro argumento e um ou mais nomes de diretório como argumentos subseqüentes. No Linux, se você não passar nenhum nome de diretório, será como se você tivesse passado .
(o diretório atual). Nomeie esse script rchmodf
, torne-o executável ( chmod a+rx /path/to/rchmodf
) e coloque-o em algum lugar no seu $PATH
.
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
Explicações: mode=$1; shift
define a variável mode
para o primeiro argumento do script e remove esse primeiro argumento da lista. "$@"
expande para a lista de todos os argumentos.
Se desejar, você pode criar um script que aceite os modos de diretório e de arquivo.
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
Observe que 744 não é um modo de arquivo útil; 644 (gravável pelo usuário e legível pelo mundo) e 755 (também executável pelo mundo) são muito mais comuns. Além disso, alterar todos os arquivos em uma árvore para serem executáveis ou não executáveis raramente é útil; você provavelmente desejará chamar esse script com argumentos como +rX
(capital X
, para definir o bit executável apenas para diretórios e arquivos que já são executáveis). Na verdade, o X
modo simbólico é provavelmente o que você estava atrás com esses scripts: chmod -R +rX .
.
Com o bash ou o zsh, há outra maneira de agir recursivamente, mas apenas em diretórios. Para o bash, você precisa da versão 4 e para executar shopt -s globstar
primeiro.
chmod a+rx **/*/
Em zsh, você pode agir sobre arquivos somente por sufixação (.)
: chmod a+r **/*(.)
.
Vou passar a pergunta do Nautilus.
Script vinculado por user23538, espero que você não se importe.
Eu tentei e funciona bem. Por favor, note que se você usar. como o argumento do caminho (execute-o no mesmo diretório em que o script está localizado), ele de fato altera as permissões de arquivo do próprio script para 644, portanto, coloque-o no diretório acima.
fonte
Eu escrevi um script que basicamente faz o acima, mas também fornece um pouco de flexibilidade para as opções de linha de comando (permissões de diretório e / ou arquivo, ou excluir ambas, ele redefine automaticamente tudo para 755-644). Ele também verifica alguns cenários de erro.
http://bigfloppydonkeydisk.blogspot.com.au/2012/09/recursively-chmod-only-files-or.html
fonte