J'ai fait quelque chose de fou à un moment donné qui a créé un fichier appelé -rf
sur mon système de fichiers.
Maintenant, je ne sais pas comment le supprimer ...
J'ai essayé:
rm "-rf"
rm \-rf
Ceux-ci viennent de sortir immédiatement, arrgh!
Quelqu'un sait comment supprimer ce fichier? De préférence sans nettoyer accidentellement tout mon dossier.
rm
un fichier appelé à-rf
partir de votre système sans se rappeler la syntaxe exacte!rm
(en sonargc
etargv
). Ainsi, ces deux résultats entraînent le passage du tableau["rm", "-rf"]
àrm
, qui fait ce que vous attendez.*
dans un dossier. Inclure un nommé-rf
et regarder le plaisir ;-)mkdir './-rf '
(ls --classify, un défaut commun dans un alias de shell, sera ajouté un /)Réponses:
Ou
la source
getopt
a--
, ce qui devrait signifier la plupart des outils linux modernes.Une autre option:
... asuming votre répertoire actuel est celui où réside le fichier.
la source
Sinon, vous pouvez toujours modifier le répertoire et le supprimer de cette façon.
puis supprimez simplement la ligne contenant le fichier (utiliser D, dd ne fonctionnera pas).
la source
vim
critiques négatives de la première réponse de cet après-midi, mais je n’ai pas eu la chance de vérifier que le mode était en mode dégradé. Il est clair que l'édition du répertoire lui-même dans un éditeur de texte n'est ni recommandée, ni possible sans un véritable saut de cerceau expert. Notez queemacs
cela fonctionnerait aussi, et pour la même raison.Une technique générique pour supprimer les noms de fichiers étranges consiste à utiliser.
pour trouver le numéro d'inode du fichier, puis utiliser.
Pas besoin de se souvenir de tous les cas particuliers.
la source
find
avoir le pouvoir de supprimer des fichiers.Même si je connais l’astuce "rm - -filename", généralement lorsque j’obtiens en quelque sorte un fichier avec un nom principal - dans son nom que je veux supprimer, je lance un gestionnaire de fichiers GUI et le fais à partir de là, afin d’éliminer les risques des erreurs.
la source
Si vous voulez juste être sûr:
la source
Juste au cas où vous seriez sur un Unix non-GNU où vous vous sentez renvoyé à l'âge de pierre (pas de
--
syntaxe, pas de-inum
commutateur à trouver, pas de commande unsink, votre éditeur refuse de modifier des répertoires, etc.), vous pouvez toujours vous aider:Cela entraînera find à nourrir tous les candidats potentiels à la requête de l'entreprise qui, à son tour, demandera une permission / un refus pour chaque fichier alimenté.
Si vous
rm
ne supportez même pas le-i
commutateur (HP-UX 10.2 sur n'importe qui de PA-RISC 1.1?), Soyez plus prudent:la source
find
?Soutenant la réponse de jleedev , je m'améliorerais avec:
être en mode interactif et demander une confirmation pour être vraiment sûr de ce que vous supprimez. (Même si la solution est bonne. C'est simplement pour votre tranquillité d'esprit)
En fait, même utiliser cela:
pour être sûr que vous n'utilisez aucun alias.
la source
Comme cela a déjà été suggéré, j'ai toujours utilisé la syntaxe
lorsque j'ai dû supprimer un fichier avec un tiret comme préfixe car - indique à la commande qu'elle ne recherche aucun autre paramètre, mais uniquement les noms de fichier.
Gardez cela à l'esprit, afin de protéger mon dossier important contre la suppression accidentelle de fichiers, j'étais habitué à créer un fichier vide appelé simplement -i qui est normalement placé en haut de la liste des fichiers lors de la résolution de la recherche *. Donc la commande
lorsqu’il est excuté, mon dossier protégé est éclaté, en cours d’exécution, dans la commande:
et le shell, au lieu de tout supprimer immédiatement, cesse de demander une confirmation (comme le demande l'option -i).
la source
-i
hack de nom de fichier - "I" était sceptique, mais il teste!La dernière fois que j'ai eu ce problème, je l'ai résolu avec:
python
importation os
os.remove ("- rf")
la source
Martin Clayton a raison.
C'est très simple et logique. Si les options existent , il est toujours
-XXX
ou--CCCC
si vous mettez un./
ou le chemin complet-rf
ne peut pas être considéré comme une option et sera considérée comme une chaîne normale.Cela fonctionne avec "tous" les noms de fichiers étranges.
la source
rm - la plupart des outils GNU acceptent - comme marqueur de fin d'options
la source