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; shiftdefine a variável modepara 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 Xmodo 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 globstarprimeiro.
chmod a+rx **/*/
Em zsh, você pode agir sobre arquivos somente por sufixação (.): chmod a+r **/*(.).
Vou passar a pergunta do Nautilus.