O mais próximo que cheguei é
# rm /path/to/directory/*.*
mas isso não funciona para arquivos que não têm extensão ...
command-line
rm
user784637
fonte
fonte
shopt -s dotglob
antes de executarrm (...)
all files
;)*.*
significa todos os arquivos que contêm um.
lugar no nome*a*
significa zero ou mais caracteres,a
seguido por zero ou mais caracteres. Ele iria coincidir com os nomes de arquivoshappy
,apple
,a
oula
.Para remover a pasta com todo o seu conteúdo ( incluindo todas as pastas internas ):
Para remover todo o conteúdo da pasta ( incluindo todas as pastas internas ), mas não a própria pasta:
ou
se você quiser garantir que arquivos / diretórios ocultos também sejam removidos.
Para remover todos os "arquivos" de dentro de uma pasta ( sem remover as pastas internas ):
Aviso : se você tiver espaços em seu caminho, sempre use aspas.
é equivalente a 2
rm -rf
chamadas separadas :Para evitar esse problema, você pode usar
'
aspas simples'
( não expande variáveis de shell) ou"
aspas duplas"
( expande variáveis de shell):Onde:
rm
- significa " remover "-f
- significa " force ", que é útil quando você não deseja ser solicitado / solicitado se deseja remover um arquivo, por exemplo.-r
- significa " recursivo ", o que significa que você deseja descer recursivamente todas as pastas e remover tudo.fonte
rm -rf /path/to/directory/*
não remove um arquivo oculto na pasta, por exemplo.htaccess
. Talvezrm -rf /path/to/directory/.
? Ainda não tentei.rm -rf /path/to/directory/.*
exclui apenas os arquivos ocultos no diretório especificado. Observando o comentário de @ danjjl na resposta de @ Rinzwind, também para excluir arquivos ocultos, executeshopt -s dotglob
antes de executarrm -rf /path/to/directory/*
.rm -rf /path/to/directory/.*
no meu sistema causou a exclusão de itens no/path/to
. Felizmente, eu tinha acabado de fazer backup de todos os meus dados em um disco separado. Escusado será dizer que NÃO emita o comando, arm -rf /path/to/directory/.*
menos que você tenha feito backup de todo o computador em um local separado / seguro!Para remover todos os arquivos no diretório (incluindo arquivos ocultos e subdiretórios), execute:
fonte
./
e../
, mas ainda excluirá os arquivos ocultos.rm -r $(pwd)/{*,.*}
Se você deseja excluir apenas arquivos no diretório / path / to /, você pode
ou
Você pode fazer cargas com
find
, a vantagem é que você pode listar o que é encontrado sem direcioná-lo pararm
que você possa ver o que será excluído antes de começar.fonte
GNU find
como um-delete
predicado. Se você ainda deseja usar-exec
, a substituição\;
por+
reunirá asrm
chamadas, aumentando a eficiência.Para excluir todos os arquivos e diretórios (incluindo os ocultos ) em um diretório, você pode tentar o seguinte:
exclua a pasta e recrie-a
usar
find
Aqui, especificamos
-mindepth 1
para excluir o diretório dir_name em si.Dê uma olhada no seguinte link:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
fonte
Se você também deseja remover todos os subdiretórios e o próprio diretório, pode usar
rm -rf /path/to/directory
. Mas sempre verifique sua linha antes de pressionar return, tambémrm -rf
pode causar muitos problemas, por exemplo, se você inserir acidentalmente um espaço após a primeira barra com permissões de superusuário ...fonte
Como essa pergunta está constantemente no topo do Google, quando eu procuro por mim mesma:
As outras respostas sofrem de diferentes problemas:
Alguns deles incluem
.
e..
que é barulhento, confuso e irritante.Alguns deles esquecem arquivos ocultos (arquivos começando com um ponto).
Eles não são excluídos na ordem correta (mais profunda) para permitir a exclusão do diretório.
Eles descem para outros sistemas de arquivos (montados), o que geralmente é indesejável.
Eles são difíceis de estender corretamente com parâmetros extras (mais sobre isso abaixo).
Portanto, para excluir RECURSIVAMENTE todos os arquivos E pastas em um diretório, faça o seguinte:
Observe que eu adicionei um
-xdev
argumento para impedir a descida para montagens (como/proc
etc.).Por que não
-depth
ou-delete
?Apesar de as pessoas me recusarem constantemente por isso, esses métodos têm uma desvantagem: não parece extensível o suficiente para permitir
-prune
um subdiretório (sem introduzir mais problemas). Em contraste com esse método, você pode inserirantes do
-mindepth
argumento para excluirsubdir
o conteúdo excluído.fonte
-depth
bandeirafind
para isso.-delete
comfind
?-delete
é profundidade primeiro. Você já está assumindo não-POSIXfind
com o-printf
, então você poderia muito bem usar-delete
ou-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... mas o meu funciona? Por quê?Você pode
cd
entrar no diretório e executar o comandorm *.*
como no DOS, se lembrar.fonte
Para excluir o diretório atual, você pode, por exemplo, usar
rm -d ./*
-d diz para excluir diretórios também.
fonte