bash 脚本复制多个文件夹和文件逻辑

bash script copy multiple folders and files logic

Bash 脚本: table 目录中的每个文件在复制到目标时都需要从键空间重命名为 newkyespace_456。

└── Main_folder
    ├── keyspace
    │   ├── tableA-12323/keyspace-tableA-12323-ka-1-Data.db
    │   ├── tableB-123425/keyspace-tableA-123425-ka-1-Data.db
    │   └── tableC-12342/keyspace-tableA-12342-ka-1-Data.db
    └── newkeyspace_456 ( given folder) and sub folders
        ├── tableA-12523 
        ├── tableB-173425
        └── tableC-1242

例子是 keyspace/tableA-12323/keyspace-tableA-12323-ka-1-Data.dbnewkeyspace_456/tableA-12523/newkeyspace_456-tableA-12523-ka-1-Data.db

请注意,可以将相同的 table(类型 A、B、C)类型复制到其他键空间(类型 A、B、C)中的相同 table 类型。 table 名称也需要更改文件名,请注意示例 12323 在复制到目录 newkeyspace_456/tableA-12523.

时已重命名为 12523

A 类 table 文件可以从 keyspace/tableA-12323 复制到 newkeyspace_456/tableA-12523 中的 A 类 table 文件。

我该如何解决这个问题?

谢谢 汤姆

使用带字符串替换的参数扩展来更改文件名,如下所示:

for fn in $(find ./keyspace -path '*.db') ; do cp "$fn" "${fn//keyspace/newkeyspace_456}" ; done ;