回答:
find . -name "*" -exec scp '{}' phogan@computer:/directory ';'
通常、私はすべてのファイルを1つの巨大なblobにまとめて「tar」し、「scp」を一度だけ呼び出します。このようなもの:
tar czfv - file1 file2 dir1 dir2 | ssh phogan@computer/ tar xvzf - -C directory
1つのコマンドで実行できます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ループがファイル名のリストで問題を起こす可能性があることを意味します。