Comment supprimer un fichier commençant par «>» ou d'autres caractères inhabituels [fermé]

8

J'ai accidentellement créé un fichier appelé

> option[value='2016']

Comment puis-je le supprimer?

My attempts:

$ rm "> option[value='2016']"
rm: cannot remove ‘> option[value='2016']’: No such file or directory
$ rm \> o*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘o*’: No such file or directory
$ rm `> o*`                                                                               
rm: missing operand
Try 'rm --help' for more information.
$ rm \> option*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘option*’: No such file or directory
$ rm '\> option*'                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory
$
$ rm "\> option*"                                                                         
rm: cannot remove ‘\\> option*’: No such file or directory

Liste des fichiers:

HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
Michael Durrant
la source
Avez-vous essayé d'utiliser des caractères génériques? rm * option *
RageAgainstTheMachine
La question suivante semble ridicule, mais avez-vous essayé les gestionnaires de fichiers GUI?
Incnis Mrsi

Réponses:

16

une autre option

ls -i 

qui donnent (avec une valeur d'inode appropriée)

5233 > option[value='2016']   5689 foo

puis

find . -inum 5233 -delete

en option (pour prévisualiser)

find . -inum 5233 -print

vous pouvez également ajouter -xdevs'il y a un autre système de fichiers en dessous.

Archemar
la source
9

Vous pouvez également utiliser l'option "-" qui selon l'homme:

 The rm command uses getopt(3) to parse its arguments, which allows it to
 accept the `--' option which will cause it to stop processing flag options at
 that point.  This will allow the removal of file names that begin with a dash
 (`-').  For example:
       rm -- -filename

J'ai donc essayé:

touch -- "> option[value='2016']"

Et je l'ai retiré avec:

rm -- "> option[value='2016']"

Le moyen le plus simple de vérifier si le nom de fichier a été correctement saisi:

rm -- ">[tab]

Et laissez l'auto-complétion faire le travail.

PS: Aussi tentant que cela puisse paraître, ne créez pas de nom de fichier "-rf *". De mauvaises choses peuvent arriver.

-rw-r--r--    1 stephan  staff      0 Sep 13 14:11 -rf *

Utilisez toujours "-i" pour être sûr.

iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
Stephan Burlot
la source
C'est de loin la meilleure réponse, de loin.
8

Le problème initial était un espace de premier plan, donc

rm " > option[value='2016']"
    ^ here

travaux.

Mise à jour de la question concernant les fichiers commençant par> etc.

Michael Durrant
la source
3

Pour une approche interactive (souvent plus sûre):

S'il y a des fichiers nommés spéciaux dans le répertoire courant.

Vous pouvez utiliser rm ./puis TabTabpour répertorier les fichiers, puis vous pouvez sélectionner le fichier et le supprimer.

Shellmode
la source
Entrez Tabdeux fois pour rechercher des fichiers.
Shellmode
1

Car rmil n'y a rien de magique >. Il vous suffit de vous assurer que le crochet angulaire y arrive (= empêcher le shell de l'interpréter comme une redirection).

> "> option[value='2016']"  #create it
rm "> option[value='2016']" #remove it

#remove all files in the current directory that have > in them
rm -- {,.}*\>*                 

Si vous êtes sur un système moderne raisonnable, vous devriez pouvoir obtenir des noms correctement échappés avec une tabulation complète.

PSkocik
la source