와일드카드 패턴으로 프로그램 이름 찾기

와일드카드 패턴으로 프로그램 이름 찾기

특정 프로그램이 설치되어 있는지 알아보는 스크립트를 작성하려고 합니다. 프로그램 이름이 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)

그런데,회피 which, 사용 type또는 command -v대체.

관련 정보