Shell

通過萬用字元模式查找程序名稱

  • April 30, 2012

我正在嘗試編寫一個腳本來嘗試查找是否安裝了某個程序。假設該程序被稱為 myprog。問題是程序可以以不同的格式命名,例如“prefix-myprog”、“myprog”和“prefix_myprog”。如果我使用:

which myprog

那麼命令行將返回正確的位置,如果它被命名為 EXACTLY,myprog。

有沒有辦法可以使用各種萬用字元找到所有可能的實例?

謝謝

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

$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)

順便說一句,避免which,使用typecommand -v代替

引用自:https://unix.stackexchange.com/questions/37576