在文件夹中的所有文件中查找所有出现的“int”或“integer”,并替换为“long”

时间:2013-06-12 19:00:07

标签: unix text replace

我在“model”文件夹中有一组.xml文件,其中包含以下内容:

   <property name="manager"
          type="string"
          column="manager" />
    <property name="age"
          type="integer"
          column="age" />

一个java映射文件,其中包含:

class ClassName()
{
    int age;
    int getAge();
    setAge(int age); 
}

我基本上需要用long删除所有出现的int和Integer。

有没有像我可以做到的unix命令或脚本?我正在使用RHEL5。

1 个答案:

答案 0 :(得分:2)

find . -type f \( -name '*.xml' -o -name '*.java' \) \
  -exec sed -ri.back 's/\<int(eger)?\>/long/g' {} +

或者,如果您只想处理包含字符串的文件:

find . -type f \( -name '*.xml' -o -name '*.java' \) \
  -exec grep -ilZE '\<int(eger)\>' {} + |
  xargs -r0 sed -ri.back 's/\<int(eger)?\>/long/g'

请注意,上述sedxargsgrep命令使用非标准扩展,但可以使用在Linux发行版(包括RHEL5)上找到的GNU变体。

.back之后的-i是保存原始文件的备份副本,如果您不需要,可以省略。