
Eu tenho um problema com meu script. Estou tentando escrever um script, onde a opção de comando find é o primeiro argumento da linha de comando.
No meu script eu tenho algo como
find_option=$1
find $find_option
O problema é que, por exemplo, para a opção find *.txt
a saída é apenas o primeiro arquivo de texto no meu diretório, mas eu gostaria de encontrar todos esses arquivos.
Obrigado
Responder1
Supondo que você dê ao seu script o padrão assim,
./myscript '*.txt'
(as aspas são necessárias para evitar a expansão do padrão para nomes no diretório atual), então você pode escrever seu script assim:
#!/bin/sh
name_pattern=$1
find . -name "$name_pattern"
Isso pega o primeiro argumento da linha de comando e o usa em uma chamada para find
, filtrando os nomes encontrados no diretório atual e abaixo pelo padrão fornecido.
Observe que aqui também você precisa citar a variável expansion of $name_pattern
na chamada to find
pelo mesmo motivo que precisou citá-la na linha de comando ao chamar seu script, ou seja, para evitar expandir o padrão para nomes no diretório atual.