Você está com falta do caractere ;
para terminar a expressão primária (consulte POSIX find ) :
find . -type f -name \*.out -exec basename {} ';'
O motivo pelo qual você deve escapar ou cite ;
porque é o seu separador de lista de shell. Você deve fazer sua casca tratá-lo literalmente. \;
, ';'
ou ";"
todos funcionam bem.
Mas esta solução irá chamar basename
para cada arquivo encontrado, torná-lo lento. Se os nomes dos arquivos não contiverem nova linha, você poderá:
find -type f -name '*.out' | sed -e '#.*/##'
Se você tiver GNU versão do coreutils > = 8.16 ou estiver em OSX, você pode usar basename -a :
find -type f -name '*.out' -exec basename -a -- {} +