如何列出目录、子目录和/或 PATH 中的所有可执行文件(程序)和 Shell 脚本?
我说的不是使用 apt-get 或任何包管理器安装的软件。使用 Ubuntu 12.04。
答案1
您可以使用ls
,例如:
ls *.bin *.py
添加您希望在命令行中列出的任何其他扩展。
更好的方法是使用find
,例如:
从当前目录进行递归搜索
find . -type f -executable
搜索当前目录
find . -type f -executable -maxdepth 1
注意:后面的点find
表示从当前目录搜索。请根据需要将其更改为从其他目录搜索。
答案2
搜索当前目录及其子目录中的所有可执行文件的一种方法是:
find . -type f -perm -u+x -ls
这里-type f
只查找常规文件,-perm -u+x
查找正确设置了可执行权限的文件并-ls
列出匹配的文件。
答案3
如果你是“创意”类型,ls
命令可以显示可执行类型的颜色,如图所示这里。可能不如过滤那么有用,但是,看起来不错。
答案4
大部分符合 POSIX 标准但使用了一些 GNU 的东西,这会$PATH
从当前目录中递归获取所有可执行文件。
sed 'y/:\n/\x00\x00/' <<< "$PATH" |\
xargs -0 -I% \
find % -maxdepth 1 -type f -executable |\
cat <(find . -maxdepth 1 -type f -executable)
# remove -maxdepth 1 to include sub-dirs
不确定为什么有人想要在子目录中包含可执行文件,但却忽略了-maxdepth 1
包含这些文件。