I am actually creating a zip file based on a pdf file that I have downloaded through java code, so the problem statement is like this.
I have a pdf file with special symbols = (wallbay)+1-50 m+ ipad+i pho ne%watch.pdf
Now I want this file to be created as a zip file which should have a name = (wallbay\)+1-50m+ipad+iphone%watch.pdf.zip
I tried below commands :
cd /Users/rkr5/Downloads/admin && zip --symlinks -r \(wallbay\)+1-50m+ipad+iphone%watch.pdf.zip \(wallbay)+1-50 m+ ipad+i pho ne%watch.pdf
cd /Users/rkr5/Downloads/admin && zip --symlinks -r "\(wallbay)+1-50 m+ ipad+i pho ne%watch.pdf.zip" "\(wallbay)+1-50 m+ ipad+i pho ne%watch.pdf"
cd /Users/rkr5/Downloads/admin && zip --symlinks -r \(wallbay)+1-50 m+ ipad+i pho ne%watch.pdf.zip "\(wallbay)+1-50 m+ ipad+i pho ne%watch.pdf"
None of them are working and throwing error like "parse error near ``)'"
The only command that works is
cd /Users/rkr5/Downloads/admin && zip --symlinks -r \(wallbay\)+1-50m+ipad+iphone%watch.pdf.zip \(wallbay\)+1-50m+ipad+iphone%watch.pdf
But above commands work only when there is no whitespaces in pdf filename.
Currently my folder structure is
/Users/rkr5/Downloads/admin/(wallbay)+1-50m+ipad+iphone%watch.pdf.zip
/Users/rkr5/Downloads/admin/(wallbay)+1-50 m+ ipad+i pho ne%watch.pdf
I am using MacOs currently..
Since the names of the files contain characters that are interpreted by the shell (like
(and)) or white space, you need to either escape or quote them.I'd recommend quoting: it's easier and requires that you just surround the unmodified filename with double quotes (
") as follows:If you prefer, you can use a shell variable to avoid repeting the filename twice:
(Since you are compressing only one file, the option
-ris not necessary.)Why don't your commands work?
This command:
doesn't work because white space and the second parenthesis in the PDF filename are not escaped.
This command:
doesn't work because it is both quoted and (partially) escaped.
This command:
doesn't work because the it is both quoted and (partially) escaped, and a double quote is missing at the end of the name of the zip archive.