J'ai essayé
rm -- -
rm "-"
rm "\-"
rm \-
Donne un coup de feu à Perl
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `rm $junk`;'
-
rm: cannot remove `-': No such file or directory
...et...
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `mv $junk newfile.garbage`;'
-
mv: cannot stat `-': No such file or directory
Toute aide serait très appréciée, gens sages.
rm
version utilisez-vous (rm --version
)?rm -
fonctionne bien avec GNU coreutils 8.5.rm ./-
Réponses:
Auparavant, cela était publié dans la FAQ Usenet pour Unix. Je vois que cela se trouve dans la FAQ de l'utilitaire GNU Core Utility . Il y avait au moins cinq méthodes différentes, mais cela fonctionne bien:
Si un nom de fichier contient des caractères non typables, utilisez:
L'
-i
indicateur demande une confirmation pour chaque fichier s'il doit être supprimé ou non.la source
La suppression d'un fichier dont le nom commence par
-
est une FAQ, mais il semble que vous ayez un problème différent.Parmi les solutions que vous avez mentionnées dans la question:
Cela devrait fonctionner.
Ce n'est pas différent de
rm -
. Les guillemets sont supprimés par le shell et larm
commande ne considère que le trait d'union comme un argument. Les guillemets sont utiles pour échapper aux métacaractères du shell; le trait d'union est spécial pourrm
, pas à la coquille.Les guillemets échappent à la barre oblique inversée. Cette action tente donc de supprimer un fichier dont le nom est composé de deux caractères, une barre oblique inversée et un trait d'union.
C'est comme
rm "-"
, équivalent àrm -
.En fait, du moins avec la version GNU coreutils de
rm
,rm -
supprime (ou tente de supprimer) un fichier dont le nom se compose uniquement d’un trait d’union. Si votre fichier avait ce nom, il serait déjà parti. Je conclus que votre fichier a un nom qui ressemble à un trait d'union.devrait donner une idée de ce que ça s'appelle vraiment.
Voici un script Perl que je viens de rassembler pour vous demander d'indiquer chaque fichier du répertoire en cours et de vous demander si vous souhaitez le supprimer. Offert sans garantie, mais je l'ai testé brièvement.
EDIT : Une solution moins élaborée: si le nom du fichier n’est qu’un caractère, il
rm ?
convient de le supprimer (ainsi que tout autre fichier de ce type).la source
M-bM-^@M-^S
est une représentation de la représentation UTF-8 à 3 octets du caractère Unicode "EN DASH", 0x2013. Je me demande si vous l'avez accidentellement copié-collé à partir d'une page Web.rm -i *
pas fonctionné? On dirait que cela ferait la même chose que le script Perl./^y/i
plutôt que/y/i
. Après tout, un utilisateur russe peut taper "Nyet".Si vous voulez quelque chose de plus sûr ...
Essayez d’utiliser une combinaison de ls et find (cela fonctionne pour tout fichier que vous êtes autorisé à supprimer).
Le paramètre '-i' vous donnera le numéro d'inode pour chaque entrée de répertoire ls -li
Une fois que vous avez le numéro d'inode ...
la source
-exec rm -i {}
est-i
de demander la suppression. Je regardeman find
et ne vois aucun moyen de faire cela.Donnez
rm ./-
un essai.Le
-
est un drapeau pour commencer un argument de drapeau. Si vous commencez l'argument avec autre chose qu'un-
, dans ce cas/
, le nom de fichier sera supposé. Quel est ce que vous souhaitez.Et puisque
file
et./file
sont le même fichier, il ciblera le fichier nommé-
via./-
.la source
Pas aussi geek que la plupart des autres réponses, mais je voudrais lancer une instance de
mc
, commandant de minuit, et juste sélectionner et supprimer le fichier.la source
Essayer:
pour voir si le nom de fichier contient des caractères non imprimables.
la source
Non pas qu'il soit nécessaire d'utiliser perl ici, mais cela devrait fonctionner:
ou pour voir quelle erreur avec ce qui précède pourrait être:
la source
J'ai eu de la chance en utilisant Nautilus de GNOME pour supprimer des fichiers mal nommés. Utilisez-vous un serveur X? Je suis sûr que d'autres navigateurs de fichiers fonctionneraient aussi.
la source
Si
n'a pas fonctionné, le nom du fichier n'est pas "juste un trait d'union". Si aucun autre fichier ne contient un trait d'union, vous pouvez essayer
la source
Jusqu'à présent, je reçois un "Aucun fichier ou répertoire de ce type" pour chaque méthode publiée jusqu'à présent:
Il semble que j'ai rm version 7.4. Je vais essayer de mettre à jour et de réessayer ces suggestions. Merci à tous pour votre aide.
la source
J'aime beaucoup utiliser le
dired
mode dans emacs pour ce genre de choses - il suffit d'ouvrir le répertoire dans emacs. Vous pouvez facilement sélectionner des fichiers et les marquer pour suppression.Une autre affiche a suggéré d'utiliser le commandant de minuit; c'est à peu près la même idée, mais si vous êtes déjà un utilisateur d'Emacs, c'est peut-être plus pratique.
la source
Devrait pouvoir faire a
rm -f '-'
travaillé pour moi dans cygwinD'ailleurs,
rm -
semble également fonctionner sur le chapeau rouge.la source
rm -
travaille pour moi aussi.