grep 和find 命令

ubutun 释放内存
echo 1 > /proc/sys/vm/drop_caches

grep sed awk vi

find . -name “*.java”|xargs grep -i “Pixi3-4”

sudo apt-get install nautilus-open-terminal
nautilus -q
打开一个文件夹,右键,会出现open in Terminal 的菜单项

grep 命令
1,在某个路径下查文件。
在/etc下查找“*.log”的文件
find /etc -name “*.log”
2,扩展,列出某个路径下所有文件,包括子目录。
find /etc -name “*”
3,在某个路径下查找所有包含“hello abcserver”字符串的文件。
find /etc -name “*” | xargs grep “hello abcserver”
或者find /etc -name “*” | xargs grep “hello abcserver” > ./cqtest.txt

正则表达式
\分别表示单词的开始和结束
ex: \ 以T或者t开头,om结尾的单词
正则表达式的元字符集:
1) ^行首 /^love/ 以love开头的行;
2) /love / 以love结尾的行;
3) . /l..e/ 匹配所有这样的行,字母l后面紧跟任意两个字符然后是e的行
4) * 重复0次或者任意多次前面字符
5) [x-y] 字符范围
6) [^x-y] 排除字符范围
7) \ 转义字符
\ 界定单词的开头和结尾
9) ( ) 标记后面用到的匹配字符 (love)able \1er=loveable lover
10) x{m,n} 重复字符x至少m此,至多n次

-i 不区分大小写
-n 显示匹配行和行号
-v只显示不匹配行
grep -i aaaa //查找包含字符aaaa的文件
ls -l |grep ^d 显示目录
ps aux | grep “httpd” |grep -v “grep”

一、find 命令格式

1、find命令的一般形式为;
find pathname -options [-print -exec -ok …]
2、find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find . -type d -exec ls -l {} \; //查找目录
find . -type f -exec ls -l {} \; //查找普通文件

在linux find 进行查找的时候,有时候需要忽略某些目录不查找,可以使用 -prune 参数来进行过滤,但必须要注意要忽略的路径参数必须紧跟着搜索的路径之后,否则该参数无法起作用。

以下是指定搜索/home/carryf目录下的所有文件,但是会忽略/home/carryf/astetc的路径:

find /home/carryf -path “/home/carryf/astetc” -prune -o -type f -print
find /home/carryf -path “/home/carryf/astetc” -prune -o -type f -name “cdr_*.conf” -print
如果要忽略两个以上的路径如何处理?

find /home/carryf /( -path “/home/carryf/astetc” -o -path”/home/carryf/etc” /) -prune -o -type f -print

find /home/carryf ( -path “/home/carryf/astetc” -o -path”/home/carryf/etc” ) -prune -o -type f -name “cdr_*.conf” -print

注意/( 和/) 前后都有空格。

查找某个文件包含内容,下面这个语句可以解决目录带空格的问题:

find ./ -name “mysql*” -print0 |xargs -0 grep “SELECT lead_id FROM vicidial_list where vendor_lead_code”

如果目录不带空格,那么可以如下面的形式执行:

find ./ -name “mysql*” |xargs grep “SELECT lead_id FROM vicidial_list where vendor_lead_code”

把out目录过滤掉
find . -path ‘./out’ -prune -o -type f -print0 | ‘xargs’ -0 -e grep -nH -e ‘EVENT_SET_MOBILE_PHONE_TYPE’
过滤多个目录
find . -path ‘./out’ -o -path ‘./images’ -prune -o -type f -print0|’xargs’ -0 -e grep -nH -e ‘EVENT_SET_MOBILE_PHONE_TYPE’

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值