首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用sed,perl用给定目录中的特定模式重命名文件及其内容?

如何使用sed,perl用给定目录中的特定模式重命名文件及其内容?
EN

Server Fault用户
提问于 2011-07-27 12:30:42
回答 1查看 1.8K关注 0票数 2

给定一个目录"Centos1“,其中很少有名为Centos1.x、Centos1.y、Centos1.z的文件,这些文件的内容中也有"Centos1”。使用单个命令(使用find、sed、perl -pie ),如何将它们重命名为"Centos2“,因为在这里出现了" Centos1”,这是Centos1目录的内容。

代码语言:javascript
运行
复制
Centos1.nvram      Centos1-s005.vmdk  Centos1.vmsd  vmware-2.log
Centos1-s001.vmdk  Centos1-s006.vmdk  Centos1.vmx   vmware.log
Centos1-s002.vmdk  Centos1-s007.vmdk  Centos1.vmxf
Centos1-s003.vmdk  Centos1-s008.vmdk  vmware-0.log
Centos1-s004.vmdk  Centos1.vmdk       vmware-1.log

注意:如果所有文件都存在,我希望将"Centos1“替换为"Centos2”。

在切换到"Centos1“目录后,我运行了下面提到的命令

代码语言:javascript
运行
复制
find . -type f -exec sed -i 's/Centos1/Centos2/g' {} +

但没什么用。有意见吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2011-07-27 12:52:33

可以使用“重命名”命令进行重命名。

代码语言:javascript
运行
复制
rename Centos1 Centos2 *

或者如果您有perl重命名

代码语言:javascript
运行
复制
rename 's/Centos1/Centos2' *

您的find命令应该将所有出现的Centos1更改为Centos2,以便将它们包装在一个简单的脚本中,使其成为一个命令。

代码语言:javascript
运行
复制
#!/bin/bash
rename Centos1 Centos2 *

find . -type f -exec sed -i 's/Centos1/Centos2/g' {} +
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/294552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档