Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 查找所有出现的“事件”;int";或;整数;在文件夹中的所有文件中,并替换为;“长”;_Unix_Text_Replace - Fatal编程技术网

Unix 查找所有出现的“事件”;int";或;整数;在文件夹中的所有文件中,并替换为;“长”;

Unix 查找所有出现的“事件”;int";或;整数;在文件夹中的所有文件中,并替换为;“长”;,unix,text,replace,Unix,Text,Replace,我在文件夹“model”中有一组.xml文件,其中包含以下内容: <property name="manager" type="string" column="manager" /> <property name="age" type="integer" column="age" /> 我基本上需要删除所有出现的int和Integer以及long 有没有像unix命令或脚本这样

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

   <property name="manager"
          type="string"
          column="manager" />
    <property name="age"
          type="integer"
          column="age" />
我基本上需要删除所有出现的int和Integer以及long

有没有像unix命令或脚本这样的方法可以做到这一点?我正在使用RHEL5。

find-键入f\(-name'*.xml'-o-name'*.java'\)\
find . -type f \( -name '*.xml' -o -name '*.java' \) \
  -exec sed -ri.back 's/\<int(eger)?\>/long/g' {} +
-exec sed-ri.back的/\/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'
find-键入f\(-name'*.xml'-o-name'*.java'\)\
-exec grep-ilZE'\'{}+|
xargs-r0 sed-ri.back's/\/long/g'
请注意,上面的
sed
xargs
grep
命令使用非标准扩展,但可以与包括RHEL5在内的Linux发行版上的GNU变体一起使用


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

大多数文本编辑器都有一个查找和替换文件夹中文件的功能。记事本++可以做到这一点。这有用吗?我不记得你是否可以用一些正则表达式编写一个grep,这些正则表达式将被查找和替换。在记事本中使用Ctrl+H,find type=“integer”replace type=“long”我可以在所有文件夹中的所有文件中编写它吗?
find . -type f \( -name '*.xml' -o -name '*.java' \) \
  -exec grep -ilZE '\<int(eger)\>' {} + |
  xargs -r0 sed -ri.back 's/\<int(eger)?\>/long/g'