6 votes

Comment supprimer un fichier dont le nom commence par "-r" en utilisant cli

J'ai créé de temps en temps des fichiers portant des noms bizarres, par exemple

$ls -rthl
$-rw-r--r--  1 shamil hep  290 Aug 13 11:58 -rf

Il est intéressant de noter qu'il est impossible de supprimer ce fichier à l'aide de la fonction

rm -f -rf

Je sais que je dois échapper aux symboles spéciaux tels que "-", de sorte que le problème est clair. Et je connaissais la solution, mais je l'ai oubliée depuis.

Comment l'effacer correctement ?

J'ai essayé des choses comme celles-ci

rm -f \-rf

mais en vain.

14voto

user131910 Points 11

-- L'interrupteur signifie : Fin des drapeaux, tout ce qui suit est considéré comme un nom de fichier. . Vous pouvez donc le faire :

rm -- -rf

Inclure le chemin d'accès complet au fichier fonctionne également :

rm /full/path/to/-rf

En fait, c'est un peu hilarant mais cette ligne de commande peut vous donner la réponse :)

$man rm | cat | grep -B4 -A3 -- "rm --"

To remove a file whose name starts with a `-', for example `-foo', use 
one of these commands:

rm -- -foo
rm ./-foo

8voto

skoperst Points 525

Vous pouvez faire

rm -rf ./-rf

Cela permettra de faire en sorte que -rf ne commence pas par un - .

2voto

BMW Points 136

D'une autre manière :

find -name "-rf" -exec rm {} \;

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X