Com find
, verificarei se algum arquivo(s) com tamanho mínimo de 1 byte existe no diretório in
e, caso contrário, sairei.
Eu tentei algo assim, mas não funciona
find ./in/ -type f -iname '*' -size 1c &> /dev/null
if [ "$?" != 0 ]
then
echo file size is under 1 byte, aborting...
fi
Com GNU
find
:Com zsh em vez de bash:
Se além de fazer esse teste, você também quiser obter essa lista de arquivos não vazios em uma matriz, para poder processá-la mais tarde em seu script, no bash 4.4+:
No zsh (com o benefício adicional de que a lista de arquivos será classificada; você pode pular essa classificação com o
oN
qualificador se não se importar com a ordem):Sem o
N
qualificador, o zsh sairá com uma mensagem de erro por si só se não houver correspondência. Se você quiser exibir sua própria mensagem de erro, você pode fazer como no bashAlgumas notas sobre sua abordagem:
-iname '*'
não faz sentido, ele corresponde a arquivos cujo nome (sem distinção de maiúsculas e minúsculas!?) é composto por qualquer quantidade de caracteres, então, exceto potencialmente para casos patológicos onde nomes de arquivos são compostos de não caracteres, ele deve corresponder a todos os arquivos e pode ser omitido.-size 1c
corresponde a arquivos cujo tamanho é exatamente 1 byte (c
sendo para o significado mais antigo dec
caractere da época em que os caracteres eram sempre feitos de um byte). Você quer-size +0c
para arquivos com pelo menos 1 byte.-size +0
para arquivos cujo tamanho arredondado para a próxima unidade de 512 bytes é maior que 0 também funcionaria aqui.find
retorna um status de saída diferente de zero quando encontra um erro que o impede de encontrar arquivos, não quando nenhum arquivo é encontrado usando a expressão de filtro fornecida.cmd...; if [ "$?" != 0 ]
, você pode usarif ! cmd...
(aliás,!=
é para comparação de strings; para comparação de números inteiros decimais (o que faria diferença, por exemplo, ao comparar00
com0
, então não aqui), você pode usar-ne
).echo file size is under 1 byte, aborting...
não está descrevendo corretamente o que acontece quando nenhum arquivo não vazio é encontrado.