Estou tentando remover todos os arquivos e subdiretórios em um diretório. Eu costumava rm -r
remover todos os arquivos, mas quero remover todos os arquivos e subdiretórios, excluindo o próprio diretório superior.
Por exemplo, eu tenho um diretório superior como images
. Ele contém os arquivos header.png
, footer.png
e um subdiretório.
Agora eu quero excluir header.png
, footer.png
e o subdiretório, mas não images
.
Como posso fazer isso no linux?
rm -Rf
de todos os arquivos e diretórios nele.Respostas:
Se seu diretório de nível superior for chamado
images
, executerm -r images/*
. Isso usa o operador shell glob*
para executarrm -r
em cada arquivo ou diretório dentroimages
.fonte
Para excluir arquivos ocultos, você deve especificar:
Com conchas, cuja globs incluem
.
e..
, isso vai levar a um erro comomas ele excluirá arquivos ocultos.
Uma abordagem sem mensagem de erro é usar a localização / exclusão com mindepth. Isso é gnu-find.
Sua descoberta pode não ter o
-mindepth
ou-delete
predicado; nesse caso, você pode:fonte
rm .*
não exclui.
ou..
e não tem, pelo menos desde 1994 para os utils GNU e provavelmente desde o final dos anos 70 para UNIX . É extremamente improvável que você encontre um sistema querm .*
atravesse o sistema de arquivos para cima, fora de um museu.Para excluir todos os arquivos e diretórios (incluindo os ocultos ) em um diretório, você pode tentar o seguinte:
use
ls -Ab
para corresponder a todos os arquivos / diretóriosuse
find
para corresponder a todos os arquivos / diretóriosou, se o seu
find
não suportar-delete
:exclua a pasta e recrie-a
na festança,
fonte
rm -rf *
não é seguro se você não tem conhecimento de arquivos em um diretório, porque um arquivo começando com-
(hífen) será interpretado comorm
bandeira ...rm -rf ./* ./.*
Para excluir todos os arquivos regulares recursivamente dentro de um diretório, este comando (assumindo GNU ou FreeBSD
find
) é bom o suficiente:Isso deixa todos os arquivos não regulares, como links simbólicos (se eles apontam para arquivos regulares ou não), diretórios, fifos, soquetes, dispositivos ...
Veja também:
para excluir arquivos de qualquer tipo, exceto diretório .
fonte
Experimente esta versão:
fonte
Estou usando o
find
comando aqui:Etapa 1: encontre todos os arquivos e exclua-os:
Exemplo:
Etapa 2: encontre todos os subdiretórios e exclua-os:
fonte
find /path/to/directory/ -type d
inclui.
isso excluirá o próprio diretório. Você também deve usar o-mindepth
interruptor como já foi dito.A questão era esvaziar um diretório = remover o conteúdo de um diretório, incluindo arquivos ocultos, mas não o próprio diretório. O comando find com -mindepth 1 é realmente o caminho correto a seguir, mas para evitar mensagens de erro, ele deve ser associado a -maxdepth 1:
fonte
A sintaxe da rm é:
Portanto, você deve declarar explicitamente o caminho apropriado, por exemplo
fonte
Você pode remover o diretório usando o seguinte comando:
Será excluído o diretório inteiro após 3 / *.
Exemplo sudo rm -r Downloads / música / *
Ele excluirá todos os arquivos que estão dentro
Downloads/song
.fonte
Isso funciona perfeitamente para mim, testou várias variações trabalhadas todas as vezes.
No diretório que contém o diretório de imagens.
antes:
depois de:
fonte
mkdir images/.somedir
;touch images/.somefile
)Para excluir todos os arquivos e subdiretórios do diretório atual, incluindo os ocultos, sem mensagem de erro :
Ou, no diretório pai:
De https://serverfault.com/a/47940/269538 .
fonte
Outra opção:
fonte: https://askubuntu.com/a/552834/56648
fonte
Exclua a pasta "test" e todos os arquivos dentro:
Exclua todos os arquivos internos, mas mantenha a pasta "test":
fonte
cd na pasta e execute o seguinte comando:
fonte