给定一个目录"Centos1“,其中很少有名为Centos1.x、Centos1.y、Centos1.z的文件,这些文件的内容中也有"Centos1”。使用单个命令(使用find、sed、perl -pie ),如何将它们重命名为"Centos2“,因为在这里出现了" Centos1”,这是Centos1目录的内容。
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“目录后,我运行了下面提到的命令
find . -type f -exec sed -i 's/Centos1/Centos2/g' {} +但没什么用。有意见吗?
发布于 2011-07-27 12:52:33
可以使用“重命名”命令进行重命名。
rename Centos1 Centos2 *或者如果您有perl重命名
rename 's/Centos1/Centos2' *您的find命令应该将所有出现的Centos1更改为Centos2,以便将它们包装在一个简单的脚本中,使其成为一个命令。
#!/bin/bash
rename Centos1 Centos2 *
find . -type f -exec sed -i 's/Centos1/Centos2/g' {} +https://serverfault.com/questions/294552
复制相似问题