查找没有路径的可执行文件名


9

我有一个包含许多可执行文件的文件夹,并且我想在find命令的结果中忽略该路径。该命令显示了我要查看的文件,但同时也列出了路径;我只想要文件名。

find /opt/g09 -maxdepth 1 -executable

如何获取find的输出以仅显示文件名而不显示完整路径?

Answers:


10

或使用:

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

添加-type f标志在这里也适用。

find手册中:

 %f     File's name with any leading directories removed (only the last element).

该答案仅要求您具有GNU,find而其他人则需要其他程序来操纵结果。


-f这就是我想想到的!谢谢编码人!
2015年

@ j0h没问题!
nixpower

6

用途basename

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

来自man basename

Print NAME with any leading directory components removed.

另外,您正在尝试find所有操作,以将搜索限制为仅文件,请使用:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;

3

对我来说最明显的解决方案是

(cd /opt/g09; find -maxdepth 1 -executable)

因为启动子外壳程序,所以您将保留在同一目录中。这种方法的优点是您不需要解析。缺点是您启动了子外壳程序(尽管您不会有这种感觉)。


1
这是一个聪明的主意。
AB


1

结合使用findperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

学习一些Perl的好方法:P
nixpower
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.