Linuxで1つのコマンドでファイルを複数のディレクトリにコピーする方法
Linuxのコマンドラインでファイルをコピーするのは簡単です。しかし、同じファイルを複数の異なる場所にコピーしたい場合はどうしますか?これも簡単です。1つのコマンドでそれを実行する方法を説明します。.
通常、1つのファイルをコピーするには、 cp
コピー元ファイルとコピー先ディレクトリにリンクするコマンド:
cp〜/ Documents / FileToBeCopied.txt〜/ TextFiles /
それをさらに2つのディレクトリにコピーするには、多くの人が異なる宛先で2回以上コマンドを実行するだけです。
cp〜/ Documents / FileToBeCopied.txt〜/ Dropbox /
cp〜/ Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
しかし、1つのコマンドで同じタスクを実行できます。
エコーdir1 dir2 dir3 | xargs -n 1 cpファイル1
これがこのコマンドのしくみです。の エコー
コマンドは通常画面に書き込みます。ただし、この場合は、の出力をフィードします。 エコー
への入力としてのコマンド xargs
コマンド。これを行うには、パイプ記号( |
1つのコマンドからの出力を別のコマンドへの入力として送ります。の xargs
コマンドを実行します cp
次のディレクトリパスを追加するたびに、 エコー
末尾までコマンド cp
コマンド。に渡される3つの引数があります xargs
, しかし -n 1
のオプション xargs
commandは、一度にこれらの引数の1つを追加するように指示します。 cp
実行するたびにコマンドを実行する.
それでは、先ほどの例から続けて、3つの別々の cp
上記のコマンドは、次のように1つのコマンドにまとめることができます。
echo〜/ TextFiles /〜/ Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp〜/ Documents / FileToBeCopied.txt
コピー中のファイルが指定されたいずれかのコピー先ディレクトリに存在する場合、そのコピー先のファイルは自動的に置き換えられます。ファイルを置き換えるかどうかは尋ねられません。 (通常、 cp
ファイルを単一の場所にコピーするコマンドを -私
既存のファイルを置き換えるかどうかを尋ねるオプション。しかし -私
optionは対話型のオプションです(それは cp
ユーザーからの入力を要求するコマンド)を使用して、対話型のオプションを使用することはできません。 cp
と組み合わせて使用する場合のコマンド xargs
.)
もう1つ考慮すべきことは、非常に大きなファイルをコピーしている場合は、クローバーを追加したくないかもしれないということです( -n
)オプション cp
上記の単一コマンドの中のcommand。このオプションは、ファイルが宛先にすでに存在している場合、その宛先でファイルが上書きされるのを自動的に防止します。非常に大きなファイルをネットワーク経由でコピーしている場合は、処理が遅くなる可能性があり、ファイルのコピーと置き換えに必要なリソースの使用を避けたい場合があります。次のコマンドは -n
オプションが指定されていて、そのファイルがecho文の引数にリストされている宛先にすでにコピーされていない場合.
echo〜/ TextFiles /〜/ Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n〜/ Documents / FileToBeCopied.txt
これらのコマンドの詳細については、Linuxのコマンドラインでman echo、man xargs、またはman cpと入力してください。.