You can use standard UNIX/Linux rm command. All you have to do is instruct the rm command not to follow end of command line flags by passing double dash -- option before -foo file name.
ADVERTISEMENTS
Many user creates these kind of file accidentally with dashes. If you attempt to remove such file via rm command, UNIX and Linux will attempt to use them as command-line options and the command will display out with an error. So how do you get rid of these files and delete them on a UNIX?

rm command syntax
Use rm command to remove files or directories as follows:
rm -- -foo
OR
rm ./-foo
OR
rm ./-filename
Other options: Unix remove file with dash
Some more options remove the —- Dashes —- on a Unix-like system:
rm ./-Foo rm "./---bar" rm -- -F rm -- ---footbal ## Edit file ## vi "./--foo" |
Alternatively, you can also use UNIX / Linux inode number to delete a file with strange names.



7 comment
The following will work as well.
rm — \-foo
Any unix utility that uses getopt will see the — as an end of options.
[self-promotion warning, but I do think that it’s topical …]
I wrote an article for Sys Admin a while back about deleting files with unusual characters in their filenames on many Unix-likes.
$ rm — -file
this will also work.
I had a directory named “–help” on accident.
# rm — “–help”
rm: cannot remove `–help’: Is a directory
so you have to do it this way:
# rm -rf — “–help”
thanks man it help
my 4050n nerowtk printer doesn’t work with large images and certain pdf files in linux.. windows 7 it works flawlessly. I was impressed with Ubuntu’s printing , but it isn’t up to windows spec. It’s also a lot slower with my nerowtk printer.
i typed dash on linux terminal and it changed. now their is only $ sign but not its full [user_name@user]$
please tell me how to disable this dash