linux在多文件中查找关键词的位置以及替换关键词的方法

一次编译u-boot时有个错误做不到nand_readd.o,本来应该找nand_read.o才对的,我用find -iname "nand_readd.*" 没有找到这个文件,文件太多找不到,我在网上一查用了这个指令:

grep -r --include=*.h -o --include=*.cpp -o --include=*.c <key_words_to_search> <path_to_search>

其中-R, -r, --recursive
              Read  all files under each directory, recursively; this is equivalent to the -d
              recurse option.

结合实际:

grep -r --include=*.* nand_readd ~/u-boot/

很快就找到了

或者:

全文搜索

:vimgrep(正常模式下使用命令) 全文搜索,功能同grep命令,但是支持在vim进行多文件跳转定位。
使用方法:vimgrep 正则表达式 文件。文件支持通配符,例如*.c代表所有的.c文件。如果希望递归搜索,可以使用**/*,表示搜索所有的文件。
:cl 列举结果
:cc(正常模式下使用命令) 当前结果
:cn(正常模式下使用命令) 下一个结果
:cp(正常模式下使用命令) 上一个结果
:cw(正常模式下使用命令) 重新打开搜索结果窗口

 

linux多文件替换关键字的方法
 
现在网上这样的方法只有两种,一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下:
 
  一、Mahuinan法:
 
  用sed命令可以批量替换多个文件中的字符串。sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
 
  例如:我要把/root/tm/ 目录下的.txt文件中的 /home/gbase/table_space替换为/home/hj/gbase/table_space,
 
  执行命令:
sed -i "s/home\/gbase\/table_space/ \ /home\/hj\/gbase\/table_space /g" `grep home\/gbase\/table_space -rl /root/tm/*.txt`
 
  这是目前linux最简单的批量替换字符串命令了! 举个例子,比方说我要将uboot代码中原先移植的飞凌2440所有文件中FL2440替换成天嵌的TQ2440,直接上图片:
 
  www.2cto.com 
  具体格式如下:
 
   sed -i "s/oldString/newString/g" `grep oldString -rl /path`
注:如果字符串中有/时,就需要在前面加一个\ ,进行转义。
 
  实例代码:
 
  sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa`
 
  sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`
 
  二、Sumly法
 
  执行命令:
 
  perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt
 
  上面的意思是说将www文件夹下所有的htm和txt文件中的“China”都替换为“Sumly”
 
  三、30T法
 
  执行命令:  www.2cto.com 
 
  perl -pi -e 's|baidu|30T|g' `find /www -type f`
 
  上面的意思是说将www文件夹下所有文件,不分扩展名,所有的“baidu”都替换为“30T”
 
///
 
sed -i "s/JSON/JSONYH/g" `grep JSON -rl ../src`
 
sed -i "s/CONFIG::pad/CONFIG::pad_tmp/g" `grep CONFIG::pad -rl ./`
GameConfig
PayWindow
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fulinux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值