我正在尝试编写一个脚本来尝试查找是否安装了某个程序。假设该程序名为 myprog。问题是程序可以用不同的格式命名,例如“prefix-myprog”、“myprog”和“prefix_myprog”。如果我使用:
which myprog
那么只有当它被准确命名为 myprog 时,命令行才会返回正确的位置。
有没有一种方法可以使用某种通配符找到所有可能的实例?
谢谢
答案1
find /bin /sbin /usr -type f | grep -i myprog
查找目录 /bin、/sbin 和 /usr 中的所有文件,然后过滤“myprog”。
man find
man grep
apropos myprog
也可能有用。
man apropos
或者怎么样locate -r myprog
?
man locate
答案2
$PATH
您可以依次循环遍历每个目录中的条目并展开通配符。
set -f; IFS=:
for dir in $PATH; do
ls $dir/*myprog* 2>/dev/null
done
set +f; unset IFS
在 zsh 中,这要简单得多:
ls $path/*myprog*(N)