Removendo pasta nomeada ~

29

Esta é a saída de ls -l

ls -l
total 53484
drwxr-xr-x 3 root root     4096 2011-02-10 05:59 ~
-rw-r--r-- 1 root root 54313810 2011-02-13 05:09 jobs.jar
-rw-r--r-- 1 root root   384035 2011-02-15 05:33 jobsLog.out

Não consigo fazer rm -rf ~ porque isso removerá meu diretório pessoal.

O que devo fazer? Não é um problema para mim, mas apenas uma dor nos olhos.

    
por theTuxRacer 15.02.2011 / 11:36

5 respostas

55

rm -R ./~

Isso fará com que procure ~ na pasta atual.

    
por Ward Muylaert 15.02.2011 / 11:47
43

Eu cometi erros bobos com rm , então aqui estão algumas dicas que aprendi ao longo dos anos para tentar manter seus dados protegidos contra acidentes:

  1. Use uma solução gráfica como o Nautilus. Suavize-o para o lixo. Então, quando você souber que não moveu seu $HOME para a lixeira (tudo teria começado a falhar e parecer estranho), esvazie sua lixeira.

  2. Mover em vez de excluir. Renomeie o diretório com mv , por exemplo:

    mv ./\~ ./a-nice-sensible-directory-name
    

    Em seguida, exclua-o.

  3. Em caso de dúvida, use o flag -i ao lidar com possíveis fubars. Ele solicitará todos os arquivos removidos e permitirá que você saiba rapidamente se algo ruim irá acontecer.

    oli@bert:~/Desktop$ rm -rfi ./del/
    rm: descend into directory './del'? y
    rm: remove regular file './del/output2.pdf'?
    
por Oli 15.02.2011 / 12:19
19

Problema brilhante:)

Você pode excluir o diretório escapando o til:

rm -rf \~

Isso funciona para todos os tipos de caracteres especiais.

    
por Stefano Palazzo 15.02.2011 / 11:47
17

Você pode simplesmente adicionar o nome da pasta em apóstrofos:

 rm '~'
    
por Yuriy Voziy 15.02.2011 / 13:26
6

Apenas outra maneira, um pouco mais complexa, é usar números de inode:

$ ls -li
total 24
 7146369 drwxr-xr-x   4 user  staff   136 Jan 19 21:50 ~
$ find . -xdev -inum 7146369 -exec rm -rf {} \;

Prós

  • Funciona com o nome fantasia que você pode ter.
  • Deve ser seguro porque os números de inode são exclusivos ( -xdev : não desce diretórios em outros sistemas de arquivos) e você pode testar a pesquisa primeiro, apenas no caso de remover -exec rm -rf {} \; . / li>

Contras

  • Fazer find . em um diretório com muitos arquivos e / ou diretórios levará muito tempo e leitura de disco.
por superfav 16.02.2011 / 01:07

Tags