1
There's too much going on for me to get my noobie head around here. I'm wanting to download all files that end -123.jpg from a multitude of nested directories on a remote server. Some of these directories have spaces in their names. I'm thinking that the command should be along the lines of:
scp -r user@server:/path/to/parent\ directory/*/*/*123\.jpg ./
… where "parent\ directory" is a directory name with a space, and the specified path goes as deep as it can before it splits off to various sub-directories, for example dir/sub dir/[uniquely_id]-123.jpg file. (Note that these sub-directories often contain spaces too, should that affect the * wildcard)
I'm getting 'no match' returned for this, or 'no such file or directory' if I meddle with the space escaping. I'm thinking therefore that it's the recursion or the wildcard that I've got wrong.
Thanks in advance.
What if filename of the file will contain space? It won't work, I think. Maybe
find
command would be better (with xargs)? – pbies – 2019-01-04T07:28:11.220Not sure why -1 ? the solution works. If there are other scenarios it can be improved further. But the given solution is NOT wrong. – AmitM – 2019-01-11T06:28:46.787
1For this particular question the answer is ok, but we try to make things universal. There are few bugs in this answer: 1. never
for
ls
2.$i
should be in quotes 3.find
should be used – pbies – 2019-01-12T18:42:05.070>
1I'm not sure what shell you're using, but in de-facto standard sh/bash, an unquoted $i will have its value subject to word-splitting and so values with spaces in them will not work as expected – they'll be passed to scp as multiple arguments, each having part of the file name. – user1686 – 2019-01-14T05:49:53.127
I am running bash shell. When I put single quote around $i , then error: $i: No such file or directory
If I put double quote then I get error: *-123.jpg: No such file or directory – AmitM – 2019-01-15T08:52:26.400