How to copy a file with a $ (dollar sign) in the name from one folder to another in Linux?
Solution 1
First of all, you don't need the -r
flag which is (from man cp
):
-R
,-r
,--recursive
copy directories recursively
That is only useful when copying entire directories and their contents. Then, whenever your file names contain strange characters, you need to either escape them or protect them with single quotes as the other answers have already suggested:
cp '$somefile.class' /folder2
cp \$somefile.class /folder2
Alternatively, you can use the shell's glob expansion feature to copy the file:
cp ?somefile.class /folder2
cp *somefile.class /folder2
The ?
matches "any single character" and *
matches "0 or more characters". So, using these globs will allow you to copy the target file without worrying about the name. However, bear in mind that you should use this carefully and make sure that the globs only match the file you want to copy. For example, the ones I used would also match Lsomefile.class
.
Solution 2
You need to escape any special character with backslash \
cp -r \$somefile.class /folder2
Read more about escaping here:
What characters do I need to escape when using sed in a sh script?
Solution 3
The $
character is used to signify a shell variable. If you file really starts with $
you should use single-quotes to prevent the shell from attempting to evaluate it as a variable:
cp -r '$somefile.class' /folder2
Related videos on Youtube
user3581265
Updated on September 18, 2022Comments
-
user3581265 over 1 year
I have a file which I want to copy from one directory to another directory.
Suppose that's the file
some.txt
to copy from folder1 to folder2cp -r some.txt /folder2
I am able to copy this file but if the filename start with
$
like$somefile.class
then I am not able to copy the file, just getting file not exist errorcp -r $somefile.class /folder2
-
phuclv almost 6 yearsit's irrelevant here. It's the duplicate of various other questions like Files starting with a dash, create a file whose name begins with “-” (hyphen a.k.a. dash or minus)?, How to cd into a directory with this name “-2” (starting with the hyphen)?, How do I deal with a filename that starts with the hyphen (-) character?, create a file which is named like a command line argument?