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

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

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

find /opt/g09 -maxdepth 1 -executable

如何才能使 find 的输出仅显示文件名而不是完整路径?

答案1

或者使用:

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,而其他答案则需要其他程序来处理您的结果。

答案2

使用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)

因为您启动了一个子 shell,所以您仍位于同一目录中。此方法的优点是您不需要解析。缺点是您启动了一个子 shell(尽管您不会感觉到这一点)。

答案4

find使用和的组合perl

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

相关内容