Usando o GNU find :
find ~ -type d -empty
(isso procura diretórios vazios a partir do seu diretório pessoal).
Eu quero mostrar todos os diretórios vazios em meu diretório inicial, usando o shell script, você pode me ajudar a encontrar o código? (sem usar find ' -empty )
Usando o GNU find :
find ~ -type d -empty
(isso procura diretórios vazios a partir do seu diretório pessoal).
Se você quiser encontrar diretórios vazios que estão em seu diretório home, exceto todos os diretórios vazios sob a árvore home, você pode usar o GNU find :
find ~ -maxdepth 1 -type d -empty
Se a sua descoberta não tiver -empty bandeira (por exemplo, exclua a de busbox ou qualquer outra POSIX-conformant find ), você tem que fazer assim (inspirado por @ jordanm resposta , usando bash :
find . -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob;
a=("$1"/*); [[ ${a[@]} ]] || printf "%s\n" "$1"' sh {} \;
-type d encontra somente diretórios -exec bash -c '...' sh {} \; chama um shell bash para todos os diretórios encontrados
shopt -s nullglob; shopt -s dotglob nesse bash instance, nullglob evita que o bash retorne o padrão quando não combina nada. dotglob inclui arquivos e diretórios que começam com um ponto ( . ). a=("$1"/*) preenche a matriz $a com todos os itens no diretório de processamento [[ ${a[@]} ]] verificar se $a contém itens. Se não ... printf "%s\n" "$1" imprime o nome do diretório Se você quiser processar essa lista ainda mais, certifique-se de delimitar os itens por nullbyte:
find . -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob;
a=("$1"/*); [[ ${a[@]} ]] || printf "%sfind . -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob;
a=("$1"/*); [[ ${a[@]} ]] || printf "%s\n" "$1"' sh {} \;
" "$1"' sh {} \; | xargs -0 ...