Localizando o nome do programa por padrão curinga

3

Estou tentando escrever um script que tentará descobrir se um determinado programa está instalado. Vamos dizer que o programa é chamado myprog. O problema é que o programa pode ser nomeado em diferentes formatos, como 'prefix-myprog', 'myprog' e 'prefix_myprog'. Se eu usar:

which myprog

então a linha de comando retornará a localização correta somente se for nomeada EXACTLY, myprog.

Existe uma maneira de localizar todas as instâncias possíveis com um tipo curinga?

Obrigado

    
por Justin 29.04.2012 / 20:20

2 respostas

4

find /bin /sbin /usr -type f | grep -i myprog

Encontre todos os arquivos nos diretórios / bin, / sbin e / usr e, em seguida, filtre em 'myprog'.

man find

man grep

apropos myprog pode ser útil também.

man apropos

ou sobre o locate -r myprog ?

man locate

    
por 29.04.2012 / 21:07
1

Você pode percorrer as entradas em $PATH e expandir curingas em cada diretório, por vez.

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

No zsh, isso é muito mais simples:

ls $path/*myprog*(N)

A propósito, evite which , use type ou command -v .

    
por 30.04.2012 / 03:02