Como posso usar “find” em um script de shell para pesquisar a partir do diretório atual?

1

Eu quero que o programa seja assim:

read a
if[ find . name $a ]; then
  echo "You found the file"
else "You haven t found the file"
fi
    
por Ciobanu Rares 12.05.2015 / 18:22

2 respostas

5

Se algo foi encontrado ou não, find sempre retornará verdadeiro. Você pode usar grep para determinar se find encontrou algo:

read -r a
if find . -maxdepth 1 -name "$a" -print -quit | grep -q . 
then
  echo "You found the file"
else 
  echo "You haven't found the file"
fi

Parar após a primeira partida ( -print -quit ) deve melhorar o desempenho, como Eliah observou. Use -maxdepth 1 para limitar os resultados ao diretório atual, mas find é um exagero para isso.

    
por muru 12.05.2015 / 18:29
2

Se não tiver para usar o comando find , usar o comando test (ou seu formato abreviado [ ... ] ) seria mais fácil, IMHO. Com test , a opção e faz o que você está procurando.

#!/bin/bash
read -r a
if [[ -e $a ]]; then
    echo "You found the file"
else
    echo "You haven't found the file"
fi

Mas esteja ciente de que test procura apenas o arquivo no diretório atual, não em nenhum subdiretório (graças a EliahKagan pelo lembrete).

Você pode encontrar uma boa visão geral sobre test no Wiki do Bash Hackers

    
por Henning Kockerbeck 12.05.2015 / 18:44