How to use wildcards (*) when copying with scp?
up vote
122
down vote
favorite
Why can't I copy with scp when I'm using *
characters in the path?
scp SERVERNAME:/DIR/* .
What configuration does SCP need in order to allow *
in the path?
UPDATE: the problem is not on server side; pscp is trying to use SCPv1, and that's why the error message:
wildcards scp putty
add a comment |
up vote
122
down vote
favorite
Why can't I copy with scp when I'm using *
characters in the path?
scp SERVERNAME:/DIR/* .
What configuration does SCP need in order to allow *
in the path?
UPDATE: the problem is not on server side; pscp is trying to use SCPv1, and that's why the error message:
wildcards scp putty
add a comment |
up vote
122
down vote
favorite
up vote
122
down vote
favorite
Why can't I copy with scp when I'm using *
characters in the path?
scp SERVERNAME:/DIR/* .
What configuration does SCP need in order to allow *
in the path?
UPDATE: the problem is not on server side; pscp is trying to use SCPv1, and that's why the error message:
wildcards scp putty
Why can't I copy with scp when I'm using *
characters in the path?
scp SERVERNAME:/DIR/* .
What configuration does SCP need in order to allow *
in the path?
UPDATE: the problem is not on server side; pscp is trying to use SCPv1, and that's why the error message:
wildcards scp putty
wildcards scp putty
edited Feb 3 at 15:39
Jeff Schaller
37k1052121
37k1052121
asked Dec 22 '11 at 13:39
LanceBaynes
10.2k75192322
10.2k75192322
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
up vote
109
down vote
You need to pass a literal escape to scp
to avoid the remote machine treating *
as a glob (notice that it is doubly quoted):
scp 'SERVERNAME:/DIR/*' .
32
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
@Patrick That's not correct,scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and tellingscp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.
– Chris Down
Dec 23 '11 at 13:29
3
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
:scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
2
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
2
Actually the question is about gettingpscp
on the client side to allow remote globbing.
– Patrick
Dec 8 '13 at 22:08
|
show 6 more comments
up vote
45
down vote
I found Patrick's advice to be correct, although Chris's answer got me on the right track. Use quotes and then you don't need the backslash before the asterisk.
scp 'SERVERNAME:/tmp/file_num*' .
scp: /tmp/file_num*.csv: No such file or directory
scp 'SERVERNAME:/tmp/file_num*' .
judgments_for_job_171642.csv 100% 32KB 32.0KB/s 00:00
judgments_for_job_172394.csv 100% 548KB 182.6KB/s 00:03
4
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal*
), not about how to glob on the remote only.
– Chris Down
Dec 8 '13 at 20:57
1
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
add a comment |
up vote
0
down vote
For me it works differently in bash and in c-shell. Don't ask why I use c-shell. In bash I don't need '' - in c-shell I do. So it seems they handle the globs differently in different linux versions.
New contributor
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
109
down vote
You need to pass a literal escape to scp
to avoid the remote machine treating *
as a glob (notice that it is doubly quoted):
scp 'SERVERNAME:/DIR/*' .
32
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
@Patrick That's not correct,scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and tellingscp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.
– Chris Down
Dec 23 '11 at 13:29
3
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
:scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
2
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
2
Actually the question is about gettingpscp
on the client side to allow remote globbing.
– Patrick
Dec 8 '13 at 22:08
|
show 6 more comments
up vote
109
down vote
You need to pass a literal escape to scp
to avoid the remote machine treating *
as a glob (notice that it is doubly quoted):
scp 'SERVERNAME:/DIR/*' .
32
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
@Patrick That's not correct,scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and tellingscp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.
– Chris Down
Dec 23 '11 at 13:29
3
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
:scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
2
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
2
Actually the question is about gettingpscp
on the client side to allow remote globbing.
– Patrick
Dec 8 '13 at 22:08
|
show 6 more comments
up vote
109
down vote
up vote
109
down vote
You need to pass a literal escape to scp
to avoid the remote machine treating *
as a glob (notice that it is doubly quoted):
scp 'SERVERNAME:/DIR/*' .
You need to pass a literal escape to scp
to avoid the remote machine treating *
as a glob (notice that it is doubly quoted):
scp 'SERVERNAME:/DIR/*' .
edited Sep 12 '13 at 16:28
answered Dec 22 '11 at 13:46
Chris Down
78.3k13187200
78.3k13187200
32
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
@Patrick That's not correct,scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and tellingscp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.
– Chris Down
Dec 23 '11 at 13:29
3
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
:scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
2
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
2
Actually the question is about gettingpscp
on the client side to allow remote globbing.
– Patrick
Dec 8 '13 at 22:08
|
show 6 more comments
32
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
@Patrick That's not correct,scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and tellingscp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.
– Chris Down
Dec 23 '11 at 13:29
3
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
:scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
2
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
2
Actually the question is about gettingpscp
on the client side to allow remote globbing.
– Patrick
Dec 8 '13 at 22:08
32
32
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
You either need quotes, or a backslash before the star, not both. And scp is not the one expanding it, the shell is.
– Patrick
Dec 23 '11 at 4:39
@Patrick That's not correct,
scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and telling scp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.– Chris Down
Dec 23 '11 at 13:29
@Patrick That's not correct,
scp
expands the glob, even if your shell doesn't (you can try it for yourself). There are two stages: stopping your shell from expanding the glob (which is not necessary because it should have nothing to expand the glob to, and thus will remain intact), and telling scp
that this character is not a glob. If it was your shell expanding the glob you would not have to escape it at all.– Chris Down
Dec 23 '11 at 13:29
3
3
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.
touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
: scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
Have you tried it? I just did, works exactly as I described (quoting and escaping causes failure). User1274964 even confirms the behavior in his answer.
touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.*' ./
: scp: /tmp/abcd.*: No such file or directory
– Patrick
Dec 7 '13 at 1:00
2
2
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
@Patrick The question is about using a literal asterisk, ie, avoiding globbing altogether, not about how to glob on the remote.
– Chris Down
Dec 8 '13 at 20:57
2
2
Actually the question is about getting
pscp
on the client side to allow remote globbing.– Patrick
Dec 8 '13 at 22:08
Actually the question is about getting
pscp
on the client side to allow remote globbing.– Patrick
Dec 8 '13 at 22:08
|
show 6 more comments
up vote
45
down vote
I found Patrick's advice to be correct, although Chris's answer got me on the right track. Use quotes and then you don't need the backslash before the asterisk.
scp 'SERVERNAME:/tmp/file_num*' .
scp: /tmp/file_num*.csv: No such file or directory
scp 'SERVERNAME:/tmp/file_num*' .
judgments_for_job_171642.csv 100% 32KB 32.0KB/s 00:00
judgments_for_job_172394.csv 100% 548KB 182.6KB/s 00:03
4
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal*
), not about how to glob on the remote only.
– Chris Down
Dec 8 '13 at 20:57
1
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
add a comment |
up vote
45
down vote
I found Patrick's advice to be correct, although Chris's answer got me on the right track. Use quotes and then you don't need the backslash before the asterisk.
scp 'SERVERNAME:/tmp/file_num*' .
scp: /tmp/file_num*.csv: No such file or directory
scp 'SERVERNAME:/tmp/file_num*' .
judgments_for_job_171642.csv 100% 32KB 32.0KB/s 00:00
judgments_for_job_172394.csv 100% 548KB 182.6KB/s 00:03
4
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal*
), not about how to glob on the remote only.
– Chris Down
Dec 8 '13 at 20:57
1
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
add a comment |
up vote
45
down vote
up vote
45
down vote
I found Patrick's advice to be correct, although Chris's answer got me on the right track. Use quotes and then you don't need the backslash before the asterisk.
scp 'SERVERNAME:/tmp/file_num*' .
scp: /tmp/file_num*.csv: No such file or directory
scp 'SERVERNAME:/tmp/file_num*' .
judgments_for_job_171642.csv 100% 32KB 32.0KB/s 00:00
judgments_for_job_172394.csv 100% 548KB 182.6KB/s 00:03
I found Patrick's advice to be correct, although Chris's answer got me on the right track. Use quotes and then you don't need the backslash before the asterisk.
scp 'SERVERNAME:/tmp/file_num*' .
scp: /tmp/file_num*.csv: No such file or directory
scp 'SERVERNAME:/tmp/file_num*' .
judgments_for_job_171642.csv 100% 32KB 32.0KB/s 00:00
judgments_for_job_172394.csv 100% 548KB 182.6KB/s 00:03
answered Mar 2 '13 at 0:41
user1274964
55142
55142
4
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal*
), not about how to glob on the remote only.
– Chris Down
Dec 8 '13 at 20:57
1
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
add a comment |
4
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal*
), not about how to glob on the remote only.
– Chris Down
Dec 8 '13 at 20:57
1
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
4
4
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal
*
), not about how to glob on the remote only.– Chris Down
Dec 8 '13 at 20:57
Right, because this means that you want to glob on the remote. The question is about how to stop globbing on the remote (to get a literal
*
), not about how to glob on the remote only.– Chris Down
Dec 8 '13 at 20:57
1
1
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
@ChrisDown. No. The user wants the wildcard not expanded on the host, and does want it expanded on the remote, to allow it to match multiple files there. None of the files returned have a literal '*' in them. Did you mean "stop globbing on the host "?
– Tim Bird
Sep 7 '16 at 19:38
add a comment |
up vote
0
down vote
For me it works differently in bash and in c-shell. Don't ask why I use c-shell. In bash I don't need '' - in c-shell I do. So it seems they handle the globs differently in different linux versions.
New contributor
add a comment |
up vote
0
down vote
For me it works differently in bash and in c-shell. Don't ask why I use c-shell. In bash I don't need '' - in c-shell I do. So it seems they handle the globs differently in different linux versions.
New contributor
add a comment |
up vote
0
down vote
up vote
0
down vote
For me it works differently in bash and in c-shell. Don't ask why I use c-shell. In bash I don't need '' - in c-shell I do. So it seems they handle the globs differently in different linux versions.
New contributor
For me it works differently in bash and in c-shell. Don't ask why I use c-shell. In bash I don't need '' - in c-shell I do. So it seems they handle the globs differently in different linux versions.
New contributor
New contributor
answered Nov 30 at 17:49
Sammy777
1
1
New contributor
New contributor
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f27419%2fhow-to-use-wildcards-when-copying-with-scp%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown