回答:
使用する find trunk/messages/ -name "*.po" -exec basename {} .po \;
例と説明:
いくつかのテストファイルを作成します。
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
OK、パスを含むファイルが見つかります。
結果ごとに実行しbasename
、名前の.po部分を削除します
$ find . -name "*.po" -exec basename \{} .po \;
test1
test2
find . -name '*.po' -exec bash -c 'echo ${0%.po}' {} \;
find . -name '*.po' -type f -exec sh -c 'echo $(basename $(dirname $0))/$(basename $0)' {} \;
find
ですか?
-execdir
パスなしでファイルを印刷するパラメーターを使用できます。例:
find . -name "*.po" -execdir echo {} ';'
拡張子のないファイル:
find . -name "*.txt" -execdir basename {} .po ';'
注:POSIXではないため、BSD find
はクリーンなファイル名を出力しますが、GNU find
を使用するとextraが出力され./
ます。
私がここで見つけたコマンドに基づいて:http : //www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
あなたはこれを行うことができますsed
(これはbasename
アプローチよりも速く実行されました):
find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'