是否有一种简单的方法可以递归搜索某个术语的目录层次结构中的所有文件(例如port
),并将该术语的所有匹配项替换为另一个(例如port-lookup
)。
我已尝试过this post中的建议,但它们仅适用于单个文件。
答案 0 :(得分:4)
试试这个
find ./ -type f -exec sed -i -e 's/port/port-lookup/g' {} \;
如果您不想更改文件修改时间
grep -rl 'port' /search_in_this_dir | xargs sed -i 's/port/port-offset/g'
答案 1 :(得分:4)
实现此目的的最简单(也可以说是最纯粹和最直观)的方法是执行递归文件fun Activity.b() {
this.textView.setText(“”)
}
,然后将这些文件结果传输到sed(通过grep
)来处理就地替换
xargs
关于这个主题有一个全面的community wiki answer,我建议你阅读Unix& Linux交换。
答案 2 :(得分:1)
如果你有最新版本的bash(> 4)
shopt -s globstar
sed -i 's/port/port-lookup/g' **/*
答案 3 :(得分:0)
只需1个命令行:msr -rp dir1,dir2,file1,fileN -x port -o port-lookup -R
上述命令会在文件中重复搜索并将纯文本port
替换为port-lookup
。
-R
-l
-K
或-K -R
或-RK
。{/ li>
-i
,例如-i -x
或-ix
。C++
/ C#
/ Java
/ Scala
正则表达式语法,请使用-t
代替{ {1}}。-x
,排除-f "\.(xml|java|cpp)$"
--nf "\.(so|a|lib|dll|obj)$"
,排除-d "src"
--nd "^(target|\.git)$"
--s1 1
/ --s1 1B
--s2 1.20MB
和/或--w1 2017-08-01
有关查找和替换文件或管道的更多用法,请参阅我的打开项目https://github.com/qualiu/msr(--w2 "2017-08-12 11:20:30"
/ msr.exe
/ msr.gcc*
位于msr.cygwin
目录中。内置使用和exmaples只需运行exe。文档如performance comparision with findstr and grep。