Answers:
find . -name "*" -exec scp '{}' phogan@computer:/directory ';'
通常,我会将所有文件“ tar”在一起成为一个巨大的blob,然后只调用“ scp”一次。像这样:
tar czfv - file1 file2 dir1 dir2 | ssh phogan@computer/ tar xvzf - -C directory
您只需要一个命令就可以做到scp
。
scp
:scp `find <path> -name <expression>` user@host:<path_where_to_copy>
scp --exec=`find <path> -name <expression>` user@host:<path_where_to_copy>
确保封装find
中之间的命令反引号 `而不是单引号'。
scp `find <path> -name <expression>` user@host:<path_where_to_copy>
-r
scp -r
用于递归单个(目录)条目,而不是多个条目(多个文件)。
for f in `find . -name "*"`;do scp $f phogan@computer/directory;done
grep -l pattern *
我会建议
find . -print0 | tar --null --files-from=/dev/stdin -cf - | ssh phogan@computer tar -xf - -C /directory
请注意,此解决方案避免在命令行中使用文件名,而将文件名解释为命令行参数。
要注意的另一件事是文件名可能包含空格。这意味着bash中的for循环可能难以处理文件名列表。