コマンドラインの初心者として、グラフィカルインターフェイスを介してすばやく実行したのと同じタスクで、コマンドラインに多くのコマンドが要求される場合があると感じるかもしれません。ただし、学習、練習、および経験を通じてコマンドラインパワーユーザーになると、非常にシンプルでありながら便利なショートカットを使用して、同じタスクを非常に迅速に実行できることに気付くでしょう。この記事では、実行するために多くのコマンドが必要になる可能性があるが、実際には1つの単純なコマンドでタスクを実行できるケースの1つについて説明します。
場合によっては、1つのファイルをシステム上の複数の場所にコピーする必要があります。つまり、cpコマンドを複数回使用する必要があるということですか?答えはいいえだ!さらに読んで解決策を見つけましょう。
この記事に記載されているコマンドは、Ubuntu18.04LTSシステムで実行されています。
1つのファイルを複数の場所に同時にコピーする方法
cpコマンドを使用すると、次の構文を使用してファイルを新しい場所にコピーする方法を知っています。
$ cp ~[/location/sourcefile] ~[/destinationfolder]
ここでは、サンプルテキストファイルをダウンロードフォルダからドキュメントフォルダにコピーしています:
同じファイルを1つではなく2つの異なる場所にコピーしたい場合、考えられる解決策はcpコマンドを2回使用しているようです。
ここでは、cpコマンドを2回使用して、サンプルテキストファイルをダウンロードフォルダーからパブリックフォルダーとデスクトップフォルダーにコピーしています。
cpコマンドを2回使用して同じファイルを2つの場所にコピーすることは論理的ですが、ファイルを3つ、5つ、またはそれ以上の場所にコピーする必要があると仮定します。 1つのコマンドでこの目的を達成する方法は次のとおりです。
構文:
$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp [/location/sourcefile]
次の例では、このコマンドを使用して、サンプルテキストファイルをダウンロードフォルダーから3つの異なるフォルダーに同時にコピーします。
目的を達成するために、echoコマンドとxargsコマンドを1行で使用しました。
コマンドの仕組み
echoコマンドは出力を画面に出力しますが、この例では、これを使用して、|を介して出力をxargsコマンドにフィードしています。シンボル。 xargsコマンドはechoコマンドから3回入力を受け取り、cp操作を3回実行して、サンプルテキストを3つの異なる場所にコピーします。 nカウントは、cpコマンドに一度に1つの引数を取るように指示します。
このコマンドは、宛先フォルダーにある同じ名前の既存のファイルを上書きすることに注意してください。したがって、重要なファイルのバックアップを常に取っておくことをお勧めします。上書き操作の前に確認するために使用したiオプションは、xargsコマンドでは機能しません。
ただし、ファイルが宛先フォルダーに既に存在する場合にファイルを上書きしないようにするのに役立つコマンドの使用法が1つあります。ソースファイルの前のnオプション。
構文:
$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp n [/lcoation/sourcefile]
例:
nオプションは、特にネットワークを介して、ある場所から別の場所に非常に大きなファイルをコピーする場合に非常に便利です。このようにして、既存のファイルをコピーして置き換えるためにリソースが無駄になるのを防ぐことができます。
このチュートリアルを実行すると、コマンドラインの第一人者になることに一歩近づきました。これで、1つのファイルを別の場所にコピーするという単純なタスクを実行するために複数のコマンドを作成する必要がなくなりました。説明したように、echoコマンドとxargsコマンドをマージして、問題を1つのコマンドで解決することができます。