我试图使用 find 从搜索结果中仅获取名称,但它也始终包含目录。如何使用 find 仅打印名称(或分配给变量)
find trunk/messages/ -name "*.po" -printf '%f\n'
Run Code Online (Sandbox Code Playgroud)
一个类似的命令将它分配给一个变量,例如“资源”,以便稍后使用它。
编辑:如果可能的话,只有不包括扩展名的名称。
Hen*_*nes 27
用 find trunk/messages/ -name "*.po" -exec basename {} .po \;
示例和解释:
创建一些测试文件:
$ touch test1.po
$ touch test2.po
$ find . -name "*.po" -print
./test1.po
./test2.po
Run Code Online (Sandbox Code Playgroud)
好的,找到文件,包括路径。
对于每个结果执行basename
,并去除名称的 .po 部分
$ find . -name "*.po" -exec basename \{} .po \;
test1
test2
Run Code Online (Sandbox Code Playgroud)
您可以使用-execdir
参数来打印没有路径的文件,例如:
find . -name "*.po" -execdir echo {} ';'
Run Code Online (Sandbox Code Playgroud)
没有扩展名的文件:
find . -name "*.txt" -execdir basename {} .po ';'
Run Code Online (Sandbox Code Playgroud)
注意:由于它不是 POSIX,BSDfind
将打印干净的文件名,但是使用 GNUfind
将打印额外的./
.
请参阅:为什么 GNU find -execdir 命令的行为与 BSD find 不同?
归档时间: |
|
查看次数: |
57127 次 |
最近记录: |