Digamos que eu tenha um diretório chamado foo/
. Esta pasta inclui subdiretórios. Como posso excluir todos os diretórios vazios em um comando?
command-line
delete
directory
justingrif
fonte
fonte
rm -rf <directory-name>
. Isso removerá o diretório, juntamente com todo o seu conteúdo, incluindo arquivos e subdiretórios. A-r
opção significa excluir recursivamente, enquanto o-f
comando significa não avisar antes de excluir. Se você deseja ser solicitado antes de excluir um diretório / arquivo, substitua a-f
opção pela-i
opçãostdout
comando de um (por exemplofind
) nostdin
outro (por exemplorm
), no entanto, tenha muito cuidado, pois pode apagar ou excluir arquivos / diretórios que você não deseja excluir! Para mais informações sobre como fazer isso, consulte asman
páginas de cada um desses comandos. Para estar seguro, sempre teste essas coisas em um diretório temporário antes de experimentar a coisa real.Você pode aproveitar a
rmdir
recusa do comando em excluir diretórios não vazios e afind -depth
opção de percorrer a árvore de diretórios de baixo para cima:(e ignore os erros) ou acrescente-os
2>/dev/null
para realmente ignorá-los.A
-depth
opção parafind
começar a localizar na parte inferior da árvore de diretórios.rm -rf
excluirá todos os arquivos no diretório (e seus subdiretórios e ....) E todos os diretórios e tudo mais.fonte
Excluirá todos os diretórios vazios. Irá gerar um erro para cada diretório e arquivo não vazio, para impedir que esses erros atrapalhem seu terminal, use
fonte
rmdir * 2>/dev/null || true
. (O find (1) é o melhor caminho para criação de scripts, mas por outro motivo: porque expressa melhor o que você quer fazer.)$HOME
. Com um sorriso maligno.Pois se você deseja excluir apenas os subdiretórios diretos de
foo/
.fonte
Abordagem Python
Isso funciona assim:
os.walk()
função para percorrer recursivamente a árvore de diretórios. Em cada iteraçãor
está definido para a pasta atual que está acessando,s
contém lista de diretórios dentror
, ef
conterá lista de arquivos nessa pasta. É claro que sef
es
estamos vazios, sabemos quer
está vazio.empty
, a lista de todos os diretórios vazios, com base na avaliação mencionada acima.map()
é usada para executaros.rmdir()
em cada item daempty
lista. A compreensão da lista pode ser usada e também alternativa.Como um script, seria assim:
fonte
/bin/sh
apenas e o Python é realmente uma linguagem mais elegante do que os dois.