Pular para o conteúdo

verificar diretorio vazio

Responder tópico
  • Denunciar
  • Indicar
01 02

1. verificar diretorio vazio

Enviado em 21/03/2011 - 10:24h

Bom dia a todos, estou procurando um comando para verificar se meu diretorio esta ou não vazio, pelo test tem as opções -z e -n mas testa somente strings, preciso testar se o diretório esta vazio.

obrigado

wander

Responder tópico

2. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 10:29h

Use o $ls | wc -l no diretório onde precisa verificar, se for igual a zero, bingo!

3. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 10:32h

Outra dica seria com o "ls"

DIR=/home/fulano/diretorio

ls $DIR 2> /dev/null

if [ $? -ne 0 ]; then
echo "Diretorio vazio!"
else
echo "Ha conteudo no diretorio!"
fi

4. verificar diretorio vazio

Enviado em 21/03/2011 - 10:36h

no if o $? será substituido pelo nome do diretorio a ser testado

5. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 10:44h

creio que o $ é para indicar variável e o ? para completar a pesquisa do script...

6. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 10:48h

premoli, veja o que eu estou querendo

fiz um script para compactar algumas pastas, mas o tar acusa erro quando o diretorio esta vazio, o que estou testando:
primeiro testo se realmente é um diretório com o -d
depois quero testar se o diretório está vazio, se estiver não executo o tar, tem como usar a negativa ou diferença nesta opção.

obrigado

7. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 10:53h

Não gente...

Todo comando Bash, após executado, salva seu valor de retorno em uma variável especial que é o $?

Logo, executando o ls que passei (substituir o $DIR pelo seu diretório) ele retorna os seguintes valores:
0: Diretorio com conteudo
2: Diretorio vazio.

O teste que faco no if é se o valor de retorno é diferente de zero (-ne 0). Se for diferente de zero, o diretorio esta vazio. Caso contrario, tem conteudo.

8. Expansão com curingas...

Enviado em 21/03/2011 - 11:06h

Tente assim:

Ex.:

[ diretorio/* = 'diretorio/*' ] && echo Vazio

9. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 11:22h

Apoveitando a op do and no if é && e do ou


10. É:

Enviado em 21/03/2011 - 11:29h

||


<Se Ok> && <então faça isso> || <senão faça isso>

11. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 13:31h

SMarcell:

Meu conhecimento em Shell Script é médio/avançado, porém nunca vi essa cláusula:

[ diretorio/* = 'diretorio/*' ] && echo Vazio

Poderia explicar a primeira parte por favor?

Grato!

12. Re: verificar diretorio vazio

Enviado em 21/03/2011 - 14:20h

Como você sabe, o caractere curinga '*' casa com qualquer coisa, logo se você fizer o seguinte teste:

echo diretorio/*

A saída será como no exemplo:

diretorio/arq1 diretorio/arq2 diretorio/arq3 diretorio/arqN

Portanto ao utilizar a construção '[ diretorio/* = 'diretorio/*] ...' o shell irá expandir diretorio/* e depois compara a expansão feita com o literal (observe o uso das aspas simples!) 'diretorio/*'.

No caso do diretório em questão conter vários arquivos, o test vai retornar a mensagem 'número excessivo de argumentos', porém mesmo assim a comparação ainda será validada.

Outra alternativa seria utilizando o find:

find <diretório> -type d -empty
01 02

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder