我想重命名我的文件,以便它们的名称与文件夹相同。
我有一个主文件夹,大约有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
非常感谢你
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。