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

时间:2018-03-20 22:26:37

标签: bash subdirectory batch-rename file-copying

Bash脚本: 当将表目录中的每个文件复制到目标时,需要将其从键空间重命名为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

请注意,可以将相同的表(类型A,B,C)类型复制到其他键空间(类型A,B,C)中的相同表类型。表名也需要更改文件名,请注意示例12323在复制到diretory newkeyspace_456 / tableA-12523时已重命名为12523。

类型A表文件可以从keypace / tableA-12323复制到newkeyspace_456 / tableA-12523中的Type A表文件。

如何处理此问题?

由于 汤姆

1 个答案:

答案 0 :(得分:1)

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

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