Answers:
用 find trunk/messages/ -name "*.po" -exec basename {} .po \;
示例和说明:
创建一些测试文件:
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
好的,找到文件,包括路径。
对于每个结果,执行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!!'