Como excluir o conteúdo de um diretório no Centos


9

Preciso excluir todo o conteúdo de uma pasta no CentOS, mas não a própria pasta.

Por exemplo: tenho uma pasta chamada "MYFOLDER" que contém as subpastas FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... etc, e alguns arquivos. Preciso excluir todas essas pastas e arquivos, mas não a pasta MYFOLDER do contêiner. Eu preciso desse diretório para direcionar os resultados de um processo anterior.

Eu tentei com o rm -rf comando, mas isso exclui a pasta do contêiner também.

Respostas:


11

Exclua o conteúdo da pasta.

rm -r MYFOLDER/*

1
Note que isso não oculta arquivos / diretórios dentro myfolder
tylerl

1
@tylerl: Faz se você definir shopt -s dotglobprimeiro.
jgoldschrafe

Isso requer que você aprove manualmente y / n descendente em cada subdiretório, o que é uma completa perda de tempo. O comando correto lidaria com tudo isso automaticamente, para que você não fique preso a 50 prompts.
CodeMed 13/10/2015

rm -R /path/to/myfolder/*é a sintaxe correta para evitar solicitações excessivas para aprovar a exclusão de todos os arquivos e subpastas. Observe a capital R.
CodeMed 16/10/2015

5

Você pode usar:

rm -r MYFOLDER/{.[^.],.??*}

Isso exclui também os arquivos e pastas ocultos. Se você tiver muitos arquivos no diretório MYFOLDER, execute:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

Eu tenho mais de 500k arquivos dentro do meu meta/diretório, então eu queria tentar a alternativa xargs, no entanto, recebo estas mensagens de erro: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
Verifique se você está usando o bashshell. O shell deve suportar "Expansão de chaves" e "Expressões regulares" para padrões de arquivos.
Mircea Vutcovici

3

A maneira mais fácil, na minha opinião, é excluir o diretório inteiro, inclusive ele próprio, e depois recriar a pasta. Há situações em que essa não é uma boa solução (scripts autônomos ou pipelines mais complexos), mas você não especificou por que não deseja excluir a pasta.

rm -rf foldername
mkdir foldername

Opa Você especificou (reli seu post). Bem, ainda, excluir e recriar pode funcionar. Especialmente se você encadear comandos juntos, como

rm -rf foldername && mkdir foldername

Ou

rm -rf foldername; mkdir foldername

Às vezes, você não tem permissão na pasta pai ou deseja preservar certos atributos dos quais não conhece. Por exemplo, você não pode excluir sua pasta pessoal como usuário não root, mas pode remover qualquer coisa nela.
Mircea Vutcovici 28/10/11

Essa deve ser a resposta aceita. 1
CodeMed 13/10/2015



0

Eu recomendo fortemente essa alternativa (ela também remove arquivos com espaços nos nomes):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.