Réponses:
La solution idéale pour les fichiers qui ne peuvent pas être supprimés normalement:
ls -il
La première colonne montrera le numéro d'inode des fichiers.
find . -inum [inode-number] -exec rm -i {} \;
Ceci supprimera le fichier avec le numéro d'inode spécifié après vérification.
-delete
au lieu de -exec
, puis j'ai réalisé que vous utilisiez rm -i
ce qui est une bonne idée, alors j'ai annulé. Pardon.
Vous devriez pouvoir faire référence à ce fichier comme ~/~
(sans guillemets) car tilde-expansion applique uniquement le tilde ( ~
) au tout début du mot.
rm ./~
, pour la même raison que vous avez dit
./~
littéralement signifie "un fichier ou un dossier nommé ~
dans le répertoire actuel" . Il n'y a pas de hacks comme des caractères d'échappement ou des références d'inodes.
./~
fait le fait. Au bout de cinq ans, ma mémoire est un peu floue, mais je pense que c'est pourquoi je suggère ~/~
plutôt que plus normale ./~
: La question se réfère spécifiquement à « un fichier nommé ~
dans [OP] le répertoire »; pas "dans le répertoire courant".
Citez-le ( rm '~'
) ou échappez-le ( rm \~
).
C'est toujours l'un de ceux-ci (aussi pour par exemple $
), ou add --
pour empêcher le nom de fichier d'être interprété en tant qu'argument: rm -- -i
supprime le fichier nommé -i
; également utile rm -- *
lorsque vous souhaitez supprimer tous les fichiers du répertoire en cours: Pas accidentel rm -f *
simplement parce qu'un fichier est nommé ainsi.
--
n'arrête que les arguments suivants interprétés en tant que paramètres - cela n'empêche pas le shell d'effectuer son développement (par exemple *
), c'est ce qui se passe ici. (Je sais que vous l'avez suggéré comme solution de rechange à d'autres situations, mais un avertissement serait bon.)