Usa find trunk/messages/ -name "*.po" -exec basename {} .po \;
Ejemplo y explicaciones:
Cree algunos archivos de prueba:
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
Bien, se encuentran los archivos, incluida la ruta.
Para cada resultado, ejecute basename
y elimine la parte .po del nombre
$ find . -name "*.po" -exec basename \{} .po \;
test1
test2
Puedes usar -execdir
parámetro que imprimiría el archivo sin ruta, por ejemplo:
find . -name "*.po" -execdir echo {} ';'
Archivos sin extensiones:
find . -name "*.txt" -execdir basename {} .po ';'
Consulte:¿Por qué el comando GNU find -execdir se comporta de manera diferente a BSD find?
Basado en un comando que encontré aquí:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Podrías hacer esto usando sed
(que se ejecutó más rápido para mí, que el basename
enfoque):
find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'