How to remove a file whose name starts with '-' [duplicate]
Asked Answered
B

4

7

After a mistake in a script I ended up with a file whose name starts with a dash, -:

-myfile.txt

I tried so far:

rm -myfile.txt
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

rm "-myfile.txt"
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

rm "\-myfile.txt"
rm: \-myfile.txt: No such file or directory

rm \-myfile.txt
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

rm "-"myfile.txt
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

How can I delete this file?

Bastille answered 26/2, 2014 at 17:1 Comment(3)
FAQ: rm -- filenameArcograph
Possible duplicates here and hereGloria
thanks @ajp15243. I didn't find it when searchingBastille
B
13

Thanks to @ajp15243 : the answer is :

rm ./-myfile.txt

or

rm -- -myfile.txt
Bastille answered 26/2, 2014 at 17:6 Comment(2)
I think devnull deserves some credit for the -- answer too :). You are encouraged to accept your answers to your own questions if that's what solved the problem. It will mark the question as solved for the next person who comes searching through SO for answers.Gloria
Sure, but I actually understood what he meant thanks to your post ! (I can accept my answer in 2 days!)Bastille
M
2

Use the absolute pathname

Like rm /home/name/-myfile.txt

Me answered 27/2, 2014 at 13:7 Comment(0)
C
1

you could always try the inode solution :

$ ls -al -i | grep me
2116530 -rw-rw-r--  1 user123 user123       0 Feb 27 12:39 me

and 2116530 is the inode of the file. Then you can use find to delete it

find ./ -inum 2116530 --delete

or even

find ./ -inum 2116530 -exec rm {\} \;
Coraliecoraline answered 27/2, 2014 at 12:43 Comment(0)
A
0

try this one put your file name in "-" eg: rm "-myfile.txt"

Aether answered 27/2, 2014 at 14:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.