I believe that it depends on the particular executable. In other words, it depends on cp or mv's command-line processing code, not on the shell you're using. Anyway, a double-hyphen ("--") is oftentimes used to indicate to the executable that it should stop processing switches/options. In your case, you should be able to do something like mv -i -- -001 foo-001 ^^ ^^ \ \___ stop processing switches \ \____ -i (interactive) switch To find out for sure, take a gander at mv's source code and getopt's source code. For files or dirs with REALLY interesting names (like control characters or extended ASCII characters), find's "-inum" (to match on a particular inode number) can usually do the trick. To determine an inode's inode number, use "ls -li". $ date > -001 $ ls -li total 1 75841 -rw-rw-r-- 1 foo bar 29 Apr 1 04:01 -001 ^^^^^ \___ The inode number of regular file "-001" is 75841 $ find . -xdev -inum 75841 -exec mv {} rubles4source \; $ ls -li total 1 75841 -rw-rw-r-- 1 foo bar 29 Apr 1 04:01 rubles4source D * On Sat, Oct 28, 2000 at 10:12:12PM -0700, Don Harrop wrote: > I was using gphoto to get some images form a camera and didn't assign a > default filename to prefix the -001 -002 -003... etc.. Now I've got a > bunch of filenames that start with a '-' and when I use cp or mv on the > files it thinks that it's an option instead of a file. Is there an > undocumented option that will make cp/mv realize that it's dealing with a > file? There are other ways to solve the problem but I'd like to know how > to do it with cp/mv... > > Don