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!!'