在我的 PATH 中查找具有特定字符串的可执行文件

pca*_*upo 5 bash shell

有没有办法快速知道 my 中的可执行文件是否$PATH包含特定字符串?例如,我想快速列出包含SRA.

我问的原因是我有几个包含角色的剧本SRA。问题是我总是忘记文件的起始字符(如果我记得,我会使用制表符补全来找到它)。

fed*_*qui 2

您可以将所有路径存储在一个数组中,然后find与它的各种选项一起使用:

IFS=":" read -ra paths <<< "$PATH"
find "${paths[@]}" -type f -executable -name '*SRA*'
Run Code Online (Sandbox Code Playgroud)
  • IFS=":" read -ra paths <<< "$PATH"将所有路径读取到数组中,暂时将字段分隔符设置为:,如为单个语句设置 IFS中所示。
  • -type f寻找文件。
  • -executable查找可执行文件。-perm +111您可以在 OSX 中使用(源代码)。

由于该-executable选项在 FreeBSD 或 OSX 中不可用,ghoti 强烈建议使用该-perm选项:

find -perm -o=x,-g=x,-u=x
Run Code Online (Sandbox Code Playgroud)

  • 啊,对了,如果没有“-ls”或“-exec”,“-print”是默认值。不过作为参考,FreeBSD 或 OSX 中的“find”不包含“-executable”选项,这是一个 GNU findutils 选项。我相信你可以使用“-perm +u=x,g=x,o=x”得到相同的结果。 (2认同)