Existem 3 problemas com o seu script.
- Você deve usar a opção
-name
- Em vez de salvar a lista de diretórios em uma variável e, em seguida, executar
wc -l
mais tarde, faça uma etapa conforme sugerido por @yaegashi.
- Quando você deseja
echo
a variável $alldirs
, use quotes
para que os *
nos nomes de diretório não sejam expandidos.
Então, o seu comando find
acoplado a wc
seria algo como isto:
find -name "*$dir*" ! -readable -prune 2>/dev/null | wc -l
Isso deve funcionar bem, mesmo para diretórios que tenham um asterisco ( *
) em seus nomes.
Seu script final seria algo como:
#!/bin/sh
echo -n "Please enter directory pattern: "
read dirs
find $dirs > /tmp/justbay.txt
$alldirs=$(find -name "*$dir*" ! -readable -prune 2>/dev/null)
$lines=$(find -name "*$dir*" ! -readable -prune 2>/dev/null | wc -l)
if [ $lines -eq 0 ]; then
echo "Directory not found"
exit 1
fi
echo "$alldirs" #Quoting is important, otherwise the asterisk may get expanded