verificar diretorio vazio

1. verificar diretorio vazio

wander nilson carrusca
carrusca

(usa Debian)

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



  


2. Re: verificar diretorio vazio

Fábio C Premoli
premoli

(usa Fedora)

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

Mauricio Souza Klein
Hebang

(usa Arch Linux)

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

wander nilson carrusca
carrusca

(usa Debian)

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

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


5. Re: verificar diretorio vazio

Fábio C Premoli
premoli

(usa Fedora)

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

wander nilson carrusca
carrusca

(usa Debian)

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

Mauricio Souza Klein
Hebang

(usa Arch Linux)

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...

Sandro Marcell
SMarcell

(usa Slackware)

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

Tente assim:

Ex.:

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


9. Re: verificar diretorio vazio

wander nilson carrusca
carrusca

(usa Debian)

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

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




10. É:

Sandro Marcell
SMarcell

(usa Slackware)

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

||


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



11. Re: verificar diretorio vazio

Mauricio Souza Klein
Hebang

(usa Arch Linux)

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

Sandro Marcell
SMarcell

(usa Slackware)

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



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts