O curinga é o problema. Suponha que você tenha fileA e fileB, ele será expandido para:
if [ ! -e /sub/folder/fileA /sub/folder/fileB ]; then
que é sintaticamente inválido.
Eu tenho uma condição if
dentro de um loop for
sobre pastas dentro de um determinado diretório, verificando se existe um arquivo específico dentro de cada pasta e pulando a pasta se não existir. A condição if
me dá um erro de muitos argumentos:
line 2: [: too many arguments
Esta é a minha sintaxe:
for folders in path; do
if [ ! -e /sub/folder/file* ]; then
continue
fi
#do-stuff-to-file
done
Uma verificação de loop semelhante para um subdiretório com ! -d
funciona bem ...