Como eu apago tudo em um diretório?

24

Sinto muito por fazer uma pergunta tão básica:

Como eu excluo tudo em um diretório, incluindo arquivos e diretórios ocultos?

Neste momento, uso o seguinte:

rm -rf *
rm -rf .*
    
por David Smith 27.01.2011 / 23:11

8 respostas

16

Simples e direto:

find -delete 

Inclui diretórios e arquivos ocultos. Pelo menos gnu-find sabe -delete , seu find pode ser diferente.

    
por 21.03.2011 / 04:33
11

A melhor resposta é: não faça isso. Recursivamente, remova o próprio diretório e recrie-o como um diretório vazio. É mais confiável e fácil para outras pessoas entenderem o que você está tentando fazer. Quando você recriar o diretório, ele pode ter um proprietário, grupo e permissões diferentes. Se esses são importantes, tenha cuidado. Além disso, se algum programa em execução tiver identificadores de arquivos abertos (descritores) no diretório, não será necessário removê-lo. Se nenhum desses casos especiais se aplicar, será mais simples remover o diretório inteiro.

    
por 28.01.2011 / 01:29
8
rm -rf -- * .[!.]* ..?*

Cada um dos três padrões se expande para si mesmo se não corresponder a nada, mas isso não é um problema aqui, pois queremos corresponder tudo e rm -f ignorou argumentos inexistentes.

Observe que .* corresponderia a .. .

    
por 27.01.2011 / 23:45
5

Assumindo o bash 4 +:

shopt -s dotglob
rm -rf -- *
##or:
rm -rf ./*

Com o dotglob ativado, * se expande para todos os arquivos e diretórios, mesmo aqueles que começam com . - mas não expandem para . e .. , por isso é É seguro usar com rm .

    
por 28.05.2013 / 19:59
2

se você estiver no diretório:

cd .. && rm -rf dir && mkdir dir && cd dir

caso contrário:

rm -rf /path/to/dir && mkdir /path/to/dir

    
por 28.01.2011 / 00:55
2

Oh meu Zsh

rm -rf (.|)*

Novamente, isso é apenas para o Zsh.

    
por 28.01.2011 / 01:48
1

Que tal usar find . Eu acho que esta é geralmente uma boa escolha, quando você tem que cavar através de subdiretórios.

find . -type f -exec rm {} \;
    
por 28.01.2011 / 15:46
-2

Experimente rm -rf *?* . Isso excluirá arquivos normais e ocultos.

    
por 27.01.2011 / 23:14