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.

verofairy
fonte

Respostas:

11

Exclua o conteúdo da pasta.

rm -r MYFOLDER/*
Ignacio Vazquez-Abrams
fonte
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
Mircea Vutcovici
fonte
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
JDS
fonte
À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

E se

cd MYFOLDER
find . | rm -rf

Isso exclui arquivos ocultos (os que começam com um ponto) também.

Janne Pikkarainen
fonte
1
Isso também excluirá MYFOLDER.
Mircea Vutcovici 28/10/11
0

Experimente rm -r -f filenametrabalhar com o CentOS 6.x

Shiv Singh
fonte
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
Andres SK
fonte