端末を使用して同じ名前の特定のサブディレクトリにファイルをコピーするにはどうすればよいですか?

端末を使用して同じ名前の特定のサブディレクトリにファイルをコピーするにはどうすればよいですか?

同じ名前のすべてのサブディレクトリに4つのファイルをコピーしたいと思います。サンプルディレクトリは次の場所にあります。

/toplevel/images/sources

もう一つが入っています。

/toplevel/documents/files/sources

「sources」という他のサブディレクトリにも、これらのファイルをすべて含める必要があります。 「トップレベル」ディレクトリでこれを行うには、cpコマンドをどのように使用しますか?

答え1

次のコマンドを使用して、すべてのディレクトリのリストをインポートできますfind。たとえば、次のようになります。

$ find /toplevel -name sources -type d
/toplevel/documents/files/sources
/toplevel/images/sources

-name sourcesfind名前付きの結果のみを通知し、ディレクトリsourcesのみ-type dを表示するようにフィルタリングします。これをforループと組み合わせると、/myfilesディレクトリ(たとえば)内のすべてのファイルをここにコピーできます。

$ for directory in $(find /toplevel -name sources -type d); do cp /myfiles/* "$directory"; done
$ tree /toplevel
/toplevel
├── documents
│   └── files
│       └── sources
│           ├── file_1
│           ├── file_2
│           ├── file_3
│           └── file_4
└── images
    └── sources
        ├── file_1
        ├── file_2
        ├── file_3
        └── file_4

5 directories, 8 files

関連情報