rm cannot delete files starting with — [duplicate]

2019-03-29 13:15发布

问题:

This question already has an answer here:

  • How to remove files starting with double hyphen? 7 answers

I have a script that creates files and sometimes they end up having 2 dashes at the beginning, is there any way to delete them mv doesn't work either

Here is the error I am getting

$ ls
 --1355509766.jpg

$ rm --1355509766.jpg 
rm: illegal option -- -
usage: rm [-f | -i] [-dPRrvW] file ...
   unlink file

$ rm "--1355509766.jpg"
rm: illegal option -- -
usage: rm [-f | -i] [-dPRrvW] file ...
   unlink file

回答1:

The usual trick is

rm ./--1355509766.jpg

Update: here's what man rm has to say about this:

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

       rm -- -foo

       rm ./-foo


回答2:

Use -- to separate options from parameters.

$ rm -- --1355509766.jpg

This works with other commands too. For example:

$ touch -- -v         # create a file called -v
$ grep foo -- -v      # grep for "foo" in file called -v


回答3:

Try file name with path:

$ rm ./--file.name

Example:

$ echo dgag > --test.txt
$ ls
--test.txt
$ rm ./--test.txt
$ ls