我有一个包含许多可执行文件的文件夹,我想省略 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/'