GNU/Linux >> Linux の 問題 >  >> Linux

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

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

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

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

重要な警告:

以下のコマンドは確認を求めないことに注意してください。ターゲットディレクトリに同じ名前のファイルが存在する場合、そのファイルは自動的に置き換えられます。

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

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

ostechnix.txtというテキストファイルがあります ホームディレクトリにあり、Downloadsという2つの異なるディレクトリにコピーしたかったのです。 およびDocuments 一度に。

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

方法1:検索コマンドとcpコマンドを使用する

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

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

ostechnix.txtという名前のファイルをコピーするには ~/Downloadsへ および~/Documents findを使用するディレクトリ およびcp コマンド、実行:

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

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

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

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

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

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

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

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

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

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

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

 $ echo〜/ダウンロード〜/ドキュメント| xargs -n 1 cp ostechnix.txt 

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

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

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

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

この場合も、上記のコマンドは、既存のターゲットファイルを置き換えます。ターゲットファイルを置き換えたくない場合は、-nを追加します コマンドのフラグ:

 $ echo〜/ダウンロード〜/ドキュメント| xargs -n 1 cp  -n  ostechnix.txt 

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

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

それでは、 ostechnix.txtをコピーしましょう /home/sk/Downloadsという2つの異なるディレクトリにファイルします および/home/sk/Documents

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

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

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

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

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

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

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

 $ man cp 
 $ man find 
 $ man xargs 
 $ man echo 
 $ man tee 

結論

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

繰り返しになりますが、宛先パスが正しいことを確認し、最も重要なこととして、ターゲットの場所に同じ名前のファイルが存在しないことを確認してください。

関連記事:

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

Linux
  1. xclipを使用してLinuxコマンドラインでコピーして貼り付けます

  2. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  3. Linuxでコマンドラインからファイルを分割して結合する方法

  1. Linuxcpコマンド

  2. gnu cp コマンドを使用して複数のディレクトリにファイルをコピーする方法

  3. コマンドラインからの PostgreSQL CSV インポート

  1. LinuxコマンドラインからのGoogleドライブの使用

  2. Linuxコマンドラインでファイルから特定の行を削除する

  3. Windows から Linux にファイルをコピーする