Removendo a pasta denominada ~

30

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 posso fazer rm -rf ~ isso, porque isso removerá meu diretório pessoal.

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

theTuxRacer
fonte
8
Eu evitaria escrever rm -rfalgo com tanto potencial de falha se você digitar incorretamente. Considere inserir sua ./~pasta e remover seu conteúdo antes de mover um diretório e executar rmdir ./~para remover o próprio diretório ~.
adamnfish

Respostas:

58

rm -R ./~

Isso fará com que procure ~na pasta atual.

Ward Muylaert
fonte
uau, maneira de ver as coisas direito! parabéns!
theTuxRacer
2
Esta resposta está correta, mas acho que a resposta de Oli é melhor porque é mais segura. Se você digitar um pouco errado esse comando, você descartará o sistema permanentemente.
HDave
44

Cometi erros tolos rmantes. Aqui estão algumas dicas que aprendi ao longo dos anos para tentar manter seus dados a salvo de acidentes:

  1. Use uma solução gráfica como o Nautilus. Exclua-o para a lixeira. Então, quando você souber que não $HOMEo colocou no lixo (tudo teria começado a bater e parecer estranho), esvazie o lixo.

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

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

    Em seguida, apague-o.

  3. Em caso de dúvida, use a -ibandeira ao lidar com possíveis fubares. Ele solicitará todos os arquivos removidos e informará rapidamente se algo ruim acontecerá.

    oli@bert:~/Desktop$ rm -rfi ./del/
    rm: descend into directory `./del'? y
    rm: remove regular file `./del/output2.pdf'?
    
Oli
fonte
11
GUI não pode, é um terminal ssh: P Boa idéia sobre o mv. Eu acho que devo fazer o alias rm com a rm -i.
theTuxRacer 15/02
7
Você pode ssh://user@ip/folderentrar no nautilus. Não funciona para tudo (por exemplo, se você precisa sudo), mas lá está. Aliasing -ié uma faca de dois gumes. É útil, mas também é muito irritante quando você faz muitos arquivos. Considere -Itambém. E veja man rmmais dicas.
Oli
+1 para a ideia de movimentação. Agora, eu me pergunto por que não há um substituto para rmesse movimento para (digamos) ~ / .Trash.
ShreevatsaR
19

Problema brilhante :)

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

rm -rf \~

Isso funciona para todos os tipos de caracteres especiais.

Stefano Palazzo
fonte
17

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

 rm '~'
Yuriy Voziy
fonte
6

Apenas outra maneira um pouco mais complexa de fazer isso é 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 qualquer nome que você possa ter.
  • Deve ser seguro porque os números de inode são únicos ( -xdev: não desça diretórios em outros sistemas de arquivos) e você pode testar a pesquisa primeiro, apenas no caso de remoção -exec rm -rf {} \;.

Contras

  • Fazer find .em um diretório com muitos arquivos e / ou diretórios levará muito tempo e leitura de disco.
superfav
fonte
Eu sempre fui interessado em inodes, e queria saber se era possível fazê-lo =)
theTuxRacer
Claro, isso só funciona se o seu sistema de arquivos atual tiver o conceito de um inode (nem todos os sistemas de arquivos que o Ubuntu suporta possuem esse conceito - embora a maioria dos que não o sejam não sejam sistemas de arquivos Unix nativos como vFat e NTFS)
Billy ONeal