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