Utilisez find trunk/messages/ -name "*.po" -exec basename {} .po \;
Exemple et explications :
Créez des fichiers de test :
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
Ok, les fichiers sont trouvés, y compris le chemin.
Pour chaque résultat, exécutez basename
, et supprimez la partie .po du nom
$ find . -name "*.po" -exec basename \{} .po \;
test1
test2
Vous pouvez utiliser -execdir
paramètre qui imprimerait le fichier sans chemin, par exemple :
find . -name "*.po" -execdir echo {} ';'
Fichiers sans extensions :
find . -name "*.txt" -execdir basename {} .po ';'
Voir :Pourquoi la commande GNU find -execdir se comporte-t-elle différemment de BSD find ?
Basé sur une commande que j'ai trouvée ici :http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Vous pouvez le faire en utilisant sed
(qui s'est exécuté plus rapidement pour moi que le basename
approche):
find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'