Remova todos os arquivos, exceto um com rm


10

Existe alguma maneira de remover todos os arquivos em um diretório, exceto um com um determinado nome de arquivo? Por exemplo, se eu tivesse um diretório que contém os arquivos file1, file2e dontdelete. Haveria alguma maneira de excluir rapidamente file1, file2e não dontdelete? Eu sei que eu poderia fazer, rm file1 file2mas isso não funcionaria para um monte de arquivos. Além disso, estou no Mac OS X se isso faz diferença.


Curinga simples pode ser sua solução: o arquivo rm * removerá o arquivo1 e o arquivo2, mas não será excluído. Se suas necessidades forem mais complexas, dependendo da linguagem de script do shell, você poderá gerar uma lista de arquivos que deseja excluir usando uma expressão regular e canalizar isso para o comando rm.
therobyouknow

@ Rob: Sim, minha situação é mais complexa do que isso. E a resposta de Ignacio funcionou. Obrigado, no entanto!
Wuffers 01/01

Respostas:


16

Na festança:

shopt -s extglob
rm !(dontdelete)

1
+1 Uau solução muito sucinta. Terá isso em mente se eu precisar.
therobyouknow

isso pode ser estendido para incluir vários diretórios que você não wan para apagar
mcgrailm
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.