Verwenden Sie find trunk/messages/ -name "*.po" -exec basename {} .po \;
Beispiel und Erläuterungen:
Erstellen Sie einige Testdateien:
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
Ok, Dateien werden gefunden, inklusive Pfad.
Führen Sie für jedes Ergebnis basename
aus , und entfernen Sie den .po-Teil des Namens
$ find . -name "*.po" -exec basename \{} .po \;
test1
test2
Sie können -execdir
verwenden Parameter, der die Datei ohne Pfad drucken würde, z. B.:
find . -name "*.po" -execdir echo {} ';'
Dateien ohne Erweiterungen:
find . -name "*.txt" -execdir basename {} .po ';'
Siehe:Warum verhält sich der GNU-Befehl find -execdir anders als BSD find?
Basierend auf einem Befehl, den ich hier gefunden habe:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Sie können dies mit sed
tun (was für mich schneller ausgeführt wurde als basename
Ansatz):
find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'