ウェブサイト検索

Linux のコマンドラインでファイルを複数のディレクトリにコピーする


この簡単なガイドでは、findcpecho を使用してコマンド ラインから複数のディレクトリにファイルをコピーする方法について説明します。 Linux 上の xargs および tee コマンド。

先日、いくつかのビデオを Arch Linux デスクトップの別のフォルダーにコピーしたいと思いました。すでにご存知のとおり、ファイルを右クリックし、コンテキスト メニューから Copy オプションを選択して、コピー先のディレクトリ/フォルダーに貼り付けることで簡単に実行できます。

ただし、 ファイルを一度に複数のディレクトリにコピーする他の方法があるかどうか知りたいです。単一のファイルを複数の異なるディレクトリに一度にコピーしたいときに役立つと思いました。いくつかのWeb検索を行ったところ、次の解決策が見つかりました。

重要な警告:

次のコマンドでは確認が求められないことに注意してください。対象ディレクトリに同名のファイルが存在する場合は、自動的に置き換えられます。

Linux を初めて使用する場合は、運用環境でコマンドを使用し始める前に、テスト マシンでコマンドをテストすることをお勧めします。こうすることで、データの不必要な損失を防ぐことができます。

Linux のコマンドラインから複数のディレクトリにファイルをコピーする

ホーム ディレクトリに ostechnix.txt というテキスト ファイルがあり、それを Downloads< という 2 つの異なるディレクトリにコピーしたいと考えています。ドキュメント を一度に実行できます。

まず、find および cp コマンドを使用して、ファイルを複数の異なるディレクトリにコピーする方法を見てみましょう。

方法 1: find および cp コマンドを使用する

find および cp コマンドを使用して、単一のファイルを複数のディレクトリに一度にコピーできます。

find は、ディレクトリ階層内のファイルを検索する Unix および Linux コマンドで、cp コマンドはファイルとディレクトリをコピーするために使用されます。

find を使用して、ostechnix.txt という名前のファイルを ~/Downloads ディレクトリと ~/Documents ディレクトリにコピーするには>cp コマンドで、次を実行します。

find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;

Linux で find および cp コマンドを使用してファイルを複数の異なるディレクトリにコピーする

上記のコマンドは、現在のディレクトリにある ostechnix.txt ファイルを ~/Downloads ディレクトリと ~/Documents ディレクトリにコピーします。

'-max Depth 0' オプションを指定しない場合、ostechnix.txt ファイルは ~/Downloads にコピーされます。 、~/Documents ディレクトリ、およびそのサブディレクトリにも移動します。したがって、忘れずに指定してください。

前に警告したように、宛先ディレクトリのいずれかに同じ名前のファイル (つまり、ostechnix.txt) がすでに存在する場合、上記のコマンドは確認を行わずに既存のファイルを単純に上書きします。

既存のファイルを上書きしたくない場合は、以下のように cp コマンドで -n フラグを使用できます。

find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;

今後は、ターゲット ファイルが宛先の場所にすでに存在する場合、ターゲット ファイルは置き換えられません。

方法 2: echo、xargs、および cp コマンドを使用する

ファイルを複数の場所にコピーするもう 1 つの方法は、echoxargs、および cp コマンドを使用することです。

すでにご存知のとおり、cp コマンドはファイルとディレクトリのコピーに使用され、xargs コマンドは標準入力からのコマンド ラインの構築と実行に使用されます。

echoxargs、および cp コマンドを使用してファイルを複数のディレクトリにコピーするには、次のコマンドを実行します。

echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt

Linux で cp、echo、xargs コマンドを使用してファイルを複数のディレクトリにコピーする

上記のコマンドを分解して、どのように機能するかを見てみましょう。

通常、echo コマンドは、指定された文字列またはテキストを標準出力に出力します。ただし、この場合は、echo コマンドの出力を xargs にパイプします。ここで、echo コマンドは、入力としてディレクトリ パスを xargs に送信します。

xargs コマンドは、cp コマンドを 2 回実行し、各ディレクトリのパスを cp コマンドの末尾に追加します。

xargs コマンドは、echo コマンドから 2 つの引数 (つまり、ディレクトリ パス) を受け取ります。 xargs コマンドの -n 1 オプションは、xargs にこれらの引数のうちの 1 つだけを一度に追加するように指示します。

繰り返しますが、上記のコマンドは、ターゲット ファイルが既に存在する場合はそれを置き換えます。ターゲット ファイルを置き換えたくない場合は、コマンドに -n フラグを追加します。

echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt

方法 3 - tee コマンドを使用する

Tee は、標準入力からの読み取り、標準出力とファイルへの書き込みに使用される Unix および Linux ユーティリティです。

次に、ostechnix.txt ファイルを /home/sk/Downloads/ という 2 つの異なるディレクトリにコピーします。ホーム/sk/ ドキュメント

これを行うには、ターミナルから次のコマンドを実行するだけです。

tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt

上記のコマンドは、ostechnix.txt ファイルをホーム ディレクトリから ~/Downloads および ~/Documents ディレクトリにコピーします。

tee コマンドは入力を標準出力にも書き込むことに注意してください。 tee コマンドでこれを実行したくない場合は、以下に示すように標準出力を /dev/null にリダイレクトします。

tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null

Linux で tee コマンドを使用してファイルを複数の異なるディレクトリにコピーする

もう一度警告します。宛先に同じ名前のファイル (つまり、ostechnix.txt) がすでに存在する場合、上記のコマンドは既存のファイルを上書きします。

詳細については、上記のコマンドのマニュアル ページを確認してください。

man cp
man find
man xargs
man echo
man tee

結論

これは、Linux のコマンド ラインから一度に複数のディレクトリにファイルをコピーする方法です。他の方法もあるかもしれませんが、これらのコマンドは非常にシンプルで使いやすいと思います。

もう一度、宛先パスが正しいことを確認し、最も重要なこととして、宛先の場所に同じ名前のファイルが存在しないことを確認してください。

関連記事:

  • Linux で特定の種類のファイルを検索して、あるディレクトリから別のディレクトリにコピーする方法
  • Linux でディレクトリ構造を維持しながら特定のファイル タイプをコピーする
  • ファイルのコピーとターゲット ディレクトリの作成を同時に行う
  • ファイルをコピーし、同時に所有権とアクセス許可を変更する方法
  • ファイルまたはディレクトリをコピーするときに所有権とファイル権限をそのまま維持する方法
  • Rsync を使用して SSH 経由で部分的に転送されたファイルを再開する
  • Linux および Unix で大きなファイルをネットワーク経由で迅速に転送する方法
  • アドバンスト コピー – Linux の cp および mv コマンドに進行状況バーを追加
  • ファイルの内容を表示せずにクリップボードにコピーする

関連記事