xargs
を使用できます またはまさにこの要件。 -I
を使用できます パイプラインから受け取った入力のプレースホルダーとして、do
echo "myserver:${HOME}/dir/2/" | xargs -I {} rsync -r "{}" /local/path/
(または) ~
を使用 HOME
に展開されない二重引用符なし ディレクトリ パス。
echo myserver:~/dir/2/ | xargs -I {} rsync -r "{}" /local/path/
これ
rsync -r "$(echo myserver:~/dir/2/)" /local/path/
それを行う最も簡単な方法です。
パイピングは標準出力を標準入力に接続します。ここでは、出力を引数に渡す必要があるため、従来のパイプ以外の何かが必要です。
それはコマンド置換です ($()
).
rsync
を与えることができます --files-from
を使用してファイルまたは標準入力にダウンロードするファイルのリスト :
echo "dir/2/" | rsync --files-from=- -r [email protected]: /local/path/
-
rsync
になります 標準入力から読み込みます。 rsync
にサーバーを渡すことはできません このように。サーバーへの接続は 1 つだけで、すべてのファイルはその接続を介して転送されます。
-a
を使用する場合 または --archive
--files-from
で 次に、明示的に -r
を追加する必要があります または --recursive
-a
の一部であっても、そのオプションから再帰したい場合 、 --files-from
の場合は無効です