A partir dessa mensagem de erro, aposto que
- apesar de sua tag "linux", você provavelmente não está em um sistema baseado em Linux, pois implementações de
find
normalmente encontradas em sistemas baseados em Linux não usam essa redação para os erros sobre opções desconhecidas - a variável
$PATH
está desativada (o que indica que o shell que você executa é provavelmente o shell Bourne ou Korn (implementação AT & T)).
Essa opção ilegal é o texto normalmente encontrado nas implementações tradicionais do Unix find
.
Essas implementações tradicionais também exigem pelo menos um argumento de arquivo antes que você possa usar um predicado como -name
.
Caso contrário, -name
seria considerado como opções (em oposição a predicados) se fosse o próximo argumento após find
.
E -n
(a primeira opção em -name
, que é a abreviação de -n -a -m -e
), não é uma opção find
válida.
Então, muito provavelmente, a expansão de $PATH
não resulta em nenhum argumento.
Isso aconteceria nos casos em que:
-
$PATH
está desativado -
$PATH
está definido para a string vazia -
$PATH
contém apenas espaços, tabulações ou caracteres de nova linha (o valor padrão de$IFS
).
Como $PATH
é a variável especial que contém uma lista de diretórios separada por dois-pontos para procurar executáveis incluindo o comando find
, podemos descartar 3 e provavelmente 2 (a menos que haja um comando find
no atual diretório), ou você teria um erro find: command not found
.
Quando $PATH
não está definido ( 1
acima), em execvp()
(como normalmente usado por env
ou find
% predicado -exec
por exemplo) e em algumas conchas (incluindo o Korn and Shell Bourne normalmente encontrado nesses SOs tradicionais ), find
seria encontrado por meio de uma pesquisa em um caminho de pesquisa padrão (shells como bash
não fazem isso, mas configuram (embora não exporte) $PATH
para um valor padrão quando não foi definido na inicialização).
Aqui, acho que você quer:
- use um nome de variável diferente de
$PATH
para armazenar o nome do diretório (como$dir
) - não se esqueça de citar suas variáveis
- use
${dir:-.}
se quiser usar como padrão o diretório atual se$dir
estiver vazio ou não definido. - (talvez também investigue por que a variável
$PATH
está indefinida, o que é altamente incomum)
Então:
dir=some-dir
find "${dir:-.}" -name "$FILE.log"
Observe que $dir
não começa com -
e não é um operador find
(como !
, (
, )
) e que $FILE
não contém curingas ( *
, ?
, [...]
) (observe o uso de aspas duplas em vez de aspas simples em torno de $FILE.log
, pois suponho que você queira encontrar arquivos denominados something.log
em que something
é o conteúdo de $FILE
em oposição aos arquivos chamados $FILE.log
literalmente).