「which」の「grep」のような解決策はありますか?

「which」の「grep」のような解決策はありますか?
# which mkdir
/bin/mkdir
# which mkdi
# 

mkdirたとえば、バイナリファイル名を知らず、バイナリファイルのパスを取得する方法は? (注文する)。これもwhich mkdi出力されます/bin/mkdir

答え1

zshから:

echo $path/mkdi*(N)

他の殻では、人が食べることができます。

set -f; IFS=:
for x in $PATH; do set +f; ls $x/mkdi* 2>/dev/null; done

答え2

場所

locate mkdi

更新:出力は次のように制限されます。$PATH

locate mkdi | 
while read filename; do 
  [[ ":$PATH:" == *:$(dirname $filename):* ]] && echo $filename
done

答え3

run-partsこれは、正しいパラメータが提供されている限り実行できます。以下は私が書いたシンプルなラッパーです。

#!/bin/bash
# swhich - search the path (like which) but with support for regular expressions
# "swhich '.*ch$' '^wh'" to find all in path ending with 'ch' and all starting with 'wh'
set -f; IFS=:
for all in $PATH
  do
  set +f
  for each in "$@"
    do
    run-parts --list --regex "$each" "$all"
  done
done

答え4

compgen与えられた文字列の完成を生成するBASH組み込みコマンド。スイッチ完了パス-cのコマンド名:

$ compgen -c mkd
mkdirhier
mkdir
mkdiskimage
mkdir

注:mkdirこれは私のシステムの/ binと/ usr / binにあるため、2回表示されます。

プログラマブルな仕上がりが素敵ですね。次の操作を実行できます。

$ shopt -s progcomp; complete -c which # set up progcomp
$ which mkd<ALT-*>
$ which mkdir mkdirhier mkdiskimage

...これはあなたが探しているものに近いかもしれません。

関連情報