Você errou de duas maneiras:
-
Você está passando nomes de arquivos semi-arbitrários de
find
a dois canais - paraxargs
e, em seguida, parasort
. Use-print0
com terminação nula defind
, se possível, ou incorpore as ações dentro de-exec
, como maulinglawns demonstrou . -
SE você tinha nomes de arquivos que nunca continham caracteres de
$IFS
, seu comando ainda falhava porque você pediu axargs
para executar o eco com uma substituição de comando; essa substituição de comando solicitabasename
para gerar o nome base de@
, o que provavelmente não existe. Mais perto teria sido:find /long/absolute/path -type f | xargs -L 1 -I @ basename @ | sort
... como isso teria permitido que xargs
interpole os nomes dos arquivos como argumentos para basename
.