Eu tenho os diretórios do sistema de arquivos ubuntu no diretório raiz e copiei acidentalmente centenas de arquivos no diretório raiz.
Eu tentei intuitivamente remover os arquivos copiados, excluindo o sistema de arquivos como
rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./.
mas não funciona. Qual é a maneira correta de excluir alguns diretórios enquanto exclui o todo?
Edição: Nunca tente qualquer um dos comandos aqui sem saber o que fazer!
mc
. Selecione tudo com e*
, em seguida, desmarque arquivos específicos com a tecla-
ouInsert
./bin/bash
mc
é Midnight Commander, uma imitação muito útil do Norton Commander. É executado em um terminal. (Ambos Midnight Commander e Norton Commander são exemplos do que é chamado de um gerenciador de arquivos ortodoxa .)Respostas:
Desde que você está usando
bash
:Eu recomendo adicionar
echo
no início da linha de comando quando você estiver executando algo que potencialmente pode explodir o sistema inteiro. Remova-o se estiver satisfeito com o resultado.Nota: O comando acima não removerá arquivos ocultos (aqueles cujo nome começa por um ponto). Se você também deseja removê-los, ative também a
dotglob
opção:fonte
rm -rf ./!(bin,sbin,..)
vírgula separada, mas remove todos os diretórios.!(...)
sintaxe? A partir do exemplo, pensei intuitivamentels ./!(*/)
que listaria apenas arquivos, mas não funciona dessa maneira.*
ou outros globs.Este comando mostrará todos os não-diretórios em
/
:Depois de ter certeza absoluta de que não há arquivos que deseja manter, você pode usar:
Mais seguro, seria movê-los para outro lugar para garantir que você não esteja excluindo algo que deseja preservar:
Se, além dos arquivos, você também tiver diretórios adicionados à raiz do sistema de arquivos, isso pode ser automatizado excluindo os diretórios LSB de um sistema automatizado
mv
ourm
, mas honestamente, já que estamos lidando com a remoção de coisas no diretório raiz do sistema de arquivos, sugiro fortemente que você considere fazê-lo manualmente, se possível.Se isso não for viável, algo como isso poderia fazer o truque:
Depois de passar no teste de grito (ou seja, seu sistema ainda funciona e você não está gritando de angústia), você pode remover o conteúdo de
/root/preserve/
.Nota importante: Faça o que fizer, nem pense em executar qualquer permutação de
rm -fr [ANYTHING GOES HERE] /
.fonte
rm
. Como um scriptrm -fr $somepath/
comsomepath
não inicializado. Eu poderia ter ido mais longe ao expressar o quão grave isso é, mas optei por permanecer familiar em minha advertência.Isso deve fazer o trabalho (embora não da mesma maneira que o OP solicita):
remova todos os arquivos / diretórios que deseja manter
Se todos os seus arquivos tiverem o mesmo formato de nome, data ou outra coisa, existem outros métodos.
Eu observaria os inodes - e veria se eles são sequenciais via ls -i | sort e, se são, os novos arquivos terão inodes maiores. Em seguida, usando o mesmo tipo de processo descrito acima ...
no comando recortar acima, verifique sua lista de inodes primeiro para garantir que seja a quantidade certa.
fonte