开发者社区> 问答> 正文

重命名与目录同名的文件-bash脚本

我想重命名我的文件,以便它们的名称与文件夹相同。

我有一个主文件夹,大约有1000个文件夹。每个文件夹中都有另一个文件。在最后一个文件夹中,我有不同扩展名的文件。我想重命名具有pdb扩展名的文件。

这是我的文件夹的结构:

pv----|

       |--m10\ pk\ result0.pdb result1.pdb result2.pdb
       |--m20\ pk\ result0.pdb result1.pdb result2.pdb
       |--m30\ pk\ result0.pdb result1.pdb result2.pdb

我想要这样的东西:

pv----|

       |--m10\ pk\ m10_result0.pdb m10_result1.pdb m10_result2.pdb
       |--m20\ pk\ m20_result0.pdb m20_result1.pdb m20_result2.pdb
       |--m30\ pk\ m30_result0.pdb m30_result1.pdb m30_result2.pdb

那是我编写的代码,但是没有用..

for d in MD_PR2 / * / * / 

do

```js
(cd "$d" && for file in *.pdb ; do mv "$file" "${file/result/$d_result}" ; done)
done

我的代码正在删除每个文件名的“结果”,我不知道。它变成0.pdb,1.pdb ..etc

非常感谢你

展开
收起
祖安文状元 2020-01-05 19:10:34 540 0
1 条回答
写回答
取消 提交回答
  • user@pc:~$ tree
    .
    ├── m10
    │   └── pk
    │       ├── m10_pk_result0.pdb
    │       ├── m10_pk_result1.pdb
    │       └── m10_pk_result2.pdb
    ├── m20
    │   └── pk
    │       ├── m20_pk_result0.pdb
    │       ├── m20_pk_result1.pdb
    │       └── m20_pk_result2.pdb
    └── m30
        └── pk
            ├── m30_pk_result0.pdb
            ├── m30_pk_result1.pdb
            └── m30_pk_result2.pdb
    
    

    代码说明:

    shopt -s globstar:允许**扩展为“所有文件和目录递归” 变量“文件”包含文件名,包括目录 检查“文件” "$file" =~ ".pdb"是否忽略使用目录 使用生成新文件名sed: 搜索并替换: s/search/replace/ 查找类似dir1 / dir2 / smthg.pdb的内容: (.)/(.)/(.*.pdb) 替换为dir1 / dir2 / dir1_dir2_smthg.pdb :(如果您还想将重命名的文件移动到父目录中,请\1/\2/\1_\2_\3替换\1_\2_\3为) (为了便于阅读,我删除了一些反斜杠) mv文件到newfilename

    2020-01-05 19:10:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载