Suppression du dossier nommé ~


30

Ceci est la sortie 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

Je ne peux pas le faire rm -rf ~ car cela supprimera mon répertoire personnel.

Que devrais-je faire? Ce n'est pas un problème pour moi, mais juste un mal aux yeux.


8
J'éviterais d'écrire rm -rfsur quelque chose avec un tel potentiel d'échec si vous tapez mal. Pensez à entrer dans votre ./~dossier et à en supprimer le contenu avant de monter dans un répertoire et de lancer la rmdir ./~suppression du répertoire ~ lui-même.
adamnfish

Réponses:


58

rm -R ./~

Cela le fera rechercher ~dans le dossier actuel.


wow, façon de voir les choses directement! gloire!
theTuxRacer

2
Cette réponse est correcte, mais je pense que la réponse d'Oli est meilleure parce qu'elle est plus sûre. Si vous saisissez mal cette commande, vous supprimerez définitivement votre système.
HDave le

44

J'ai fait des erreurs idiotes avec rmavant donc voici quelques conseils que j'ai appris au fil des ans pour essayer de vous protéger des données contre les accidents:

  1. Utilisez une solution graphique comme Nautilus. Supprimez-le dans la corbeille. Ensuite, lorsque vous savez que vous n'avez pas placé votre $HOMEdans la poubelle (tout aurait commencé à planter et à avoir l'air génial), videz votre poubelle.

  2. Déplacer au lieu de supprimer. Renommez le répertoire avec mv, par exemple:

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

    Ensuite, supprimez-le.

  3. En cas de doute, utilisez le -idrapeau lorsque vous traitez avec des fubars potentiels. Il vous demandera chaque fichier supprimé et devrait vous permettre de savoir très rapidement si quelque chose de grave va se produire.

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

1
ne peux pas GUI, son un terminal ssh: P Bonne idée sur le mv. Je pense que je devrais faire l'alias rm avec un rm -i.
theTuxRacer

7
Vous pouvez bondir ssh://user@ip/folderdans le nautile. Ne fonctionne pas pour tout (par exemple si vous avez besoin de sudo), mais c'est parti. Le repliement -iest une épée à double tranchant. C'est utile, mais c'est aussi énervant lorsque vous créez de nombreux fichiers. Pensez -Iaussi. Et regardez man rmpour plus de conseils.
Oli

+1 pour l'idée de déplacement. Maintenant, je me demande pourquoi il n'y a pas de remplacement pour ce rmqui passe à (par exemple) ~ / .Trash.
ShreevatsaR

19

Problème brillant :)

Vous pouvez supprimer le répertoire en échappant au tilde:

rm -rf \~

Cela fonctionne pour toutes sortes de caractères spéciaux.


17

Vous pouvez simplement transformer le nom du dossier en apostrophes:

 rm '~'

6

Une autre façon, un peu plus complexe, de le faire est d'utiliser des numéros d'inode:

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

Avantages

  • Cela fonctionne avec le nom de fantaisie que vous pouvez avoir.
  • Devrait être sûr car les numéros d'inode sont uniques ( -xdev: ne descendez pas de répertoires sur d'autres systèmes de fichiers) et vous pouvez d'abord tester la recherche, juste au cas où, en supprimant -exec rm -rf {} \;.

Les inconvénients

  • Faire find .dans un répertoire avec beaucoup de fichiers et / ou de répertoires prendra beaucoup de temps, et la lecture du disque.

J'ai toujours été intéressé par les inodes et je me demandais s'il était possible de le faire =)
theTuxRacer

Bien sûr, cela ne fonctionne que si votre système de fichiers actuel a le concept d'un inode (tous les systèmes de fichiers pris en charge par Ubuntu n'ont pas ce concept - bien que la plupart de ceux qui ne le sont pas ne soient pas des systèmes de fichiers Unix natifs comme vFat et NTFS)
Billy ONeal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.