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