如何使用终端将文件复制到同名的特定子目录?

如何使用终端将文件复制到同名的特定子目录?

我想将 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

相关内容