ホームページ » の仕方 » Linuxで1つのコマンドでファイルを複数のディレクトリにコピーする方法

    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と入力してください。.