Você pode fazer a tarefa inteira usando apenas find
:
$ find . -type f ! \( -perm 755 -o -perm 644 \) -printf "%m\t%p\n"
Exemplo
Faça todas as permutações de permissões (000-777).
$ touch {0..7}{0..7}{0..7}
$ for i in {0..7}{0..7}{0..7}; do chmod $i $i;done
$ find . -type f | wc -l
512
Uma amostra da lista de arquivos do nosso comando find
está sendo encontrada:
$ find . -type f ! \( -perm 755 -o -perm 644 \) -printf "%m\t%p\n"| head -10
734 ./734
376 ./376
555 ./555
663 ./663
256 ./256
336 ./336
2 ./002
152 ./152
527 ./527
416 ./416
Se executarmos o comando find
, poderemos confirmar que funcionou:
$ find . -type f ! \( -perm 755 -o -perm 644 \) -printf "%m\t%p\n" | grep 755
$ find . -type f ! \( -perm 755 -o -perm 644 \) -printf "%m\t%p\n" | grep 644