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
-execdir
を使用できます パスなしでファイルを出力するパラメータ、例:
find . -name "*.po" -execdir echo {} ';'
拡張子のないファイル:
find . -name "*.txt" -execdir basename {} .po ';'
参照:GNU find -execdir コマンドの動作が BSD find と異なるのはなぜですか?
ここで見つけたコマンドに基づいています: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!!'