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 este 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" {} +
Explanations: mode=$1; shift define a variável mode como o primeiro argumento do script e remove o primeiro argumento da lista. "$@" se expande para a lista de todos os argumentos.
Se quiser, você pode criar um script que aceite tanto um modo de diretório quanto um modo 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" {} +
Note que o 744 não é um modo de arquivo útil; 644 (user-writable e world-readable) e 755 (também world-executable) 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 este script com argumentos como +rX (capital X , para definir o bit executável somente para diretórios e para arquivos que já são executáveis). De fato, o modo simbólico X é provavelmente o que você estava procurando com esses scripts: chmod -R +rX . .
Com bash ou zsh, existe outra maneira de agir recursivamente, mas apenas em diretórios. Para o bash, você precisa da versão 4 e executar shopt -s globstar primeiro.
chmod a+rx **/*/
No zsh, você só pode atuar em arquivos sufixando (.) : chmod a+r **/*(.) .
Vou passar a questão do Nautilus.