
私は CentOS を使用している専用サーバーを使用しており、このサーバーには 1 つのメイン ディレクトリに 5000 を超えるディレクトリがあります。
メイン ディレクトリに がありますindex.php
。これを 5000 以上のディレクトリすべてにコピーしたいのですindex.php
が、手動で行う方法しか知りません。
コマンドラインから次のように入力してcp
、ディレクトリから動作させる方法はありますか? 開始するメイン ディレクトリ内のすべてのディレクトリとサブディレクトリにコピーします。
答え1
find . -mindepth 1 -type d -exec echo cp index.php {} \;
上記のコマンドは、現在のディレクトリからすべてのサブディレクトリにファイルを再帰的にコピーしますindex.php
が、すぐにはコピーされません。
正しいコピー コマンドがすべて印刷されていることを確認したら、 を削除しecho
て実行します。echo
は、実際に望ましくない操作を実行する前に、コマンド全体が何を実行するかを示すための安全策にすぎません。
もう一つの興味深いアプローチは、@RedGrittyBrickさんに感謝ですが、シンボリックリンクファイルを単にコピーするのではなく、 を使用します。この方法では、index.php
サブディレクトリ内のファイルはすべて、いわばルート ディレクトリ内のファイルへのショートカットとなり、重複しません。これを行うには、上記のコマンドでcp
を に変更しますln -s
。この方法では、「マスター」index.php
ファイルを変更しても、サブディレクトリ内の他のファイルはすべてそのファイルを指し示すため、表示時に自動的に変更されます。
完全性を期すために、コマンド全体を分解すると、次のように動作します。
find .
、現在のディレクトリ内を検索-mindepth 1
少なくとも1つのディレクトリの深さまで-type d
、ディレクトリのみを検索-exec …
、コマンド を実行しますecho cp index.php {}
。ここで、{}
は見つかったすべてのディレクトリに置き換えられます。このコマンドは、サブディレクトリごとに 1 回ずつ、複数回呼び出されます。