Isso é muito melhor (produz saída delimitada por nova linha):
find . -type f -printf '%04m%p\n' | perl -ne 'print substr($_, 4) if /^.(.)/'
Ou se algum dos seus nomes de arquivos puder conter caracteres de nova linha (produz uma saída delimitada por bytes nulos):
find . -type f -printf '%04m%p0644./.config/banshee-1/banshee.db
0664./.config/gedit/gedit-print-settings
0664./.config/gedit/gedit-page-setup
0644./.config/gedit/accels
' | perl -n0e 'print substr($_, 4) if /^.(.)/'
Essencialmente, o comando find produz uma saída assim:
./.config/gedit/gedit-print-settings
./.config/gedit/gedit-page-setup
O comando perl, em seguida, filtra essa saída e retira o modo do arquivo antes de imprimir qualquer linha correspondente:
find . -type f -printf '%04m%p\n' | perl -ne 'print substr($_, 4) if /^.(.)/'
Se você deseja incluir diretórios, FIFOs, soquetes e nós de dispositivos, em vez de apenas arquivos, omita o -type f
. Então, todos os links simbólicos aparecerão na lista (como sempre têm o modo 0777), então você pode querer excluí-los com ! -type l
ou segui-los com -L
.