この簡単なガイドでは、find
を使用してコマンドラインから複数のディレクトリにファイルをコピーする方法について説明します。 、cp
、echo
、xargs
および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コマンドにプログレスバーを追加
- ファイルの内容を表示せずにクリップボードにコピーする