如何列出 Linux 中的所有可执行文件(目录、子目录、$PATH)?

如何列出 Linux 中的所有可执行文件(目录、子目录、$PATH)?

如何列出目录、子目录和/或 PATH 中的所有可执行文件(程序)和 Shell 脚本?

我说的不是使用 apt-get 或任何包管理器安装的软件。使用 Ubuntu 12.04。

答案1

您可以使用ls,例如:

ls *.bin *.py

添加您希望在命令行中列出的任何其他扩展。

更好的方法是使用find,例如:

  1. 从当前目录进行递归搜索

    find . -type f -executable
    
  2. 搜索当前目录

    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包含这些文件。

相关内容