Necessário se a instrução executar uma tarefa somente se o número de arquivos no diretório for maior que 1

1

Eu quero escrever um script, mas eu quero uma instrução if para que ele seja executado somente se o número de arquivos no diretório for maior que 1. Isso é possível?

    
por jlacroix82 02.07.2012 / 14:10

3 respostas

3

Algo como

[ "$(ls -b | wc -l)" -gt 1 ] && { ... your statements ... }
    
por 02.07.2012 / 14:18
0

Eu precisava usar isso:

shopt -s nullglob
files=($dir/*) # $dir was declared earlier if you look at my script
if (( "${#files[@]}" >= 2 ));
     <statements>
fi
shopt -u nullglob

A razão pela qual nenhuma das soluções postadas aqui funcionou é por causa do seguinte. O script está executando as instruções CONTRA os diretórios, não é realmente CD'ing IN para os diretórios. Ao dizer a pasta com a qual estou trabalhando ($ dir), ele recebe a dica e funciona como esperado.

    
por 02.07.2012 / 21:42
0

Vou usar algo como:

    dir=.
    nf='find . -maxdepth 1 -type f | wc -l'

    if [ "$nf" -gt "1" ] ; then
            <do something here>
    fi

Essa abordagem só contará files no diretório apontado por dir e descartará qualquer subdiretório possível.

Não se esqueça de alterar dir de acordo com suas necessidades.

    
por 02.07.2012 / 14:24