Se débarrasser d'un fichier appelé «-d» [doublon]

18

Doublons possibles:
Comment supprimer un fichier nommé "-p" de bash?
Comment supprimer un fichier portant ce nom sous linux: -] ??????? q
Quelle commande dois-je utiliser pour supprimer un fichier appelé `-rf`?

J'ai accidentellement créé un fichier appelé: -d

J'ai essayé d'utiliser des guillemets simples et doubles ainsi que des caractères génériques pour le supprimer, mais chaque fois que "rm" me donne cette erreur:

Avertissement: l'option --directory (-d) n'est pas documentée et ne fonctionne pas. Utilisez -rf pour supprimer les répertoires non vides rm: opérande manquant Essayez `rm --help 'pour plus d'informations.

Comment puis-je me débarrasser du fichier?

phileas fogg
la source

Réponses:

44
rm -- -d

--signifie "fin des options". Tout ce qui se trouve plus loin sur la ligne de commande après cela est interprété comme un argument (c'est-à-dire le nom de fichier dans votre cas), et non comme une option.

Matteo Riva
la source
28
rm ./-d

est la réponse à votre question.

bmargulies
la source
1
rm -- -dfonctionne aussi
Ulrich Dangel
C'est la meilleure solution
gd1
8

L'utilisation de «-» est de loin la plus simple dans ce cas spécifique. Cependant, une solution plus générale si vous tombez sur un fichier avec des caractères de contrôle non imprimables est de référencer le fichier par inode:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory
che2cbs
la source
0

Gnu-find a une option -delete:

find -name "-d" -delete

sinon vous pourriez essayer

find -name "-d" -exec rm {} ";" 

mais - la solution ci-dessus est plus courte, et la façon d'arrêter l'interprétation des drapeaux avec - est utilisée par de nombreux programmes, utilisant la bibliothèque getopt, donc l'apprendre est une chose utile en général.

Mais find / -delete est aussi quelque chose de très utile à apprendre. Notez que les deux exemples suppriment récursivement les fichiers de nom "-d", ce qui peut ne pas se produire souvent, mais si vous avez un seul fichier, nommé "-d", vous pouvez en avoir plusieurs. :)

Utilisateur inconnu
la source