Executar qualquer comando em uma árvore de diretório contendo arquivos com espaços

Normalmente, a maneira comum de fazer uma iteração de arquivos e, em seguida, executar alguma ação neles é com o loop for no Bash.

for name in $(find . -type f | sort); do file "$name"; done

O problema é que ele se divide em espaços em branco, o que não é o que realmente queremos, queremos que ele se divida apenas em nova linha. Usando um enquanto laço + ler você pode evitar o problema todos juntos e ter um pipeline cleaner.

find . -type f | sort | while read name; do file "$name"; done

Mencionado originalmente em http://www.linuxjournal.com/content/bash-quoting#comment-345464