我想将 4 个文件复制到所有同名的子目录中。示例一个目录位于
/toplevel/images/sources
另一个在
/toplevel/documents/files/sources
任何其他名为“sources”的子目录也应该包含所有这些文件。在“toplevel”目录中,如何使用 cp 命令来完成此操作?
答案1
您可以使用以下命令获取所有目录的列表find
,例如:
$ find /toplevel -name sources -type d
/toplevel/documents/files/sources
/toplevel/images/sources
-name sources
告诉find
只显示名称为 的结果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