Usa find trunk/messages/ -name "*.po" -exec basename {} .po \;
Esempio e spiegazioni:
Crea alcuni file di prova:
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
Ok, i file vengono trovati, incluso il percorso.
Per ogni risultato esegui basename
, ed elimina la parte .po del nome
$ find . -name "*.po" -exec basename \{} .po \;
test1
test2
Puoi usare -execdir
parametro che stamperebbe il file senza percorso, ad esempio:
find . -name "*.po" -execdir echo {} ';'
File senza estensioni:
find . -name "*.txt" -execdir basename {} .po ';'
Vedi:Perché il comando GNU find -execdir si comporta diversamente da BSD find?
Sulla base di un comando che ho trovato qui:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Puoi farlo usando sed
(che è stato eseguito più velocemente per me rispetto al basename
approccio):
find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'