find命令集锦

find查找多种文件后缀

find命令最常用的是查找某个文件,如:

find ./ -name"abc.txt"

则会在当前目录及子目录下查找abc.txt文件

更常用的是查找某一类型的文件,如:

find ./ -name"*.txt"

则会在当前目录及子目录下查找所有txt文件,但是如果要查找多种文件类型呢?比如某文件夹下面所有.c文件和.h文件,可以这样做:

find ./ -name"*.[ch]"

这个方法有很大的局限性,只对单个字符结尾的文件有效,因为引号里面的是通配符,所以多个多字符结尾的文件只能用正则表达式来查找:

find ./ -regex".*\.java\|.*\.xml"

上面这条命令会查找当前文件夹下面的所有java文件和xml文件,find默认采用emacs正则,会比较罗嗦,如果采用posix-extended正则会比较简单,如下:

find ./ -regextypeposix-extended -regex ".*\.(java|xml)"

当然,如果不需要查找大量后缀,最简单的方式是使用-o选项,优点是比较好记:

find ./ -name"*.java" -o -name "*.xml"

还有比较低效的方法,查找出所有文件再过滤:

find ./ -type f |egrep "\.(java|xml)$"

给个批量进行git add的操作

find ./ -regex ".*\.h\|.*\.cpp" -exec git add {} \;

 

findsed批量替换目录文件中的内容

用下面的命令进行操作

find. -regex ".*\.cpp\|.*\.h" -exec sed -i 's/oldString/newString/g' {} \;

通常会用下面的命令配合进行查找

find. -regex ".*\.cpp\|.*\.h" | xargs grep -n "oldString"

有的时候这个方法不是很好用,可以用另一种方法,用到perl

find-name 'pom.xml' | xargs perl -pi -e 's|oldString|newString|g'

Ok,还可以抛弃掉find命令

sed-i "s/oldString/newString/g" `grep oldString -rl /path`

还可以用awk

grep"oldString" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i's/oldString/newString/g'

这个里面有个批量替换IP的方法

grep"[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" * -R | awk-F: '{print $1}' |  sort | uniq | xargs sed -i's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/172\.0\.0\.1/g' 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值