[Linux]find⽂件查和grep⽂件内容查
在使⽤linux时,经常需要进⾏⽂件查。其中查的命令主要有find和grep。两个命令是有区别的:
(1)find命令:根据⽂件的属性进⾏查,如⽂件名,⽂件⼤⼩,所有者,所属组,是否为空,访问时间,修改时间等。
(2)grep命令:根据⽂件的内容进⾏查,会对⽂件的每⼀⾏按照给定的模式(patter)进⾏匹配查。
⼀.find命令
基本格式:find path expression
1.按照⽂件名查
  (1)find / -f  #在根⽬录下查⽂件f,表⽰在整个硬盘查
  (2)find /etc -f  #在/etc⽬录下⽂件f
  (3)find /etc -name '*srm*'  #使⽤通配符*(0或者任意多个)。表⽰在/etc⽬录下查⽂件名中含有字符串‘srm’的⽂件linux查看当前文件夹内容
  (4)find . -name 'srm*'   #表⽰当前⽬录下查⽂件名开头是字符串‘srm’的⽂件
2.按照⽂件特征查   
  (1)find / -amin -10   # 查在系统中最后10分钟访问的⽂件(access time)
  (2)find / -atime -2  # 查在系统中最后48⼩时访问的⽂件
  (3)find / -empty   # 查在系统中为空的⽂件或者⽂件夹
  (4)find / -group cat   # 查在系统中属于 group为cat的⽂件
  (5)find / -mmin -5   # 查在系统中最后5分钟⾥修改过的⽂件(modify time)
  (6)find / -mtime -1   #查在系统中最后24⼩时⾥修改过的⽂件
  (7)find / -user fred   #查在系统中属于fred这个⽤户的⽂件
  (8)find / -size +10000c  #查出⼤于10000000字节的⽂件(c:字节,w:双字,k:KB,M:MB,G:GB)
  (9)find / -size -1000k   #查出⼩于1000KB的⽂件
3.使⽤混合查⽅式查⽂件
  参数有:!,-and(-a),-or(-o)。
  (1)find /tmp -size +10000c -and -mtime +2   #在/tmp⽬录下查⼤于10000字节并在最后2分钟内修改的⽂件
  (2)find / -user fred -or -user george   #在/⽬录下查⽤户是fred或者george的⽂件⽂件
  (3)find /tmp ! -user panda  #在/tmp⽬录中查所有不属于panda⽤户的⽂件
OR 操作符
当我们使⽤多个查条件时, find 命令会将它们通过 AND 操作符结合起来,也就是说,只有满⾜所有条件的⽂件才会被列出。不过,如果我们需要进⾏基于 OR 运算的查时,可以加上 -o 开关。
$ find -name '*.php' -o -name '*.txt'
./
./subdir/how.php
./abc.php
./cool.php
上⾯的命令查所有以 .php 结尾或者以 .txt 结尾的⽂件。
查并删除⽂件
$ find . -name "*.pyc" | xargs rm -f
查并删除⽂件夹
$ find . -name ".idea" | xargs rm -r
$ find . -name ".idea" -o -name "__pycache__" -o -name "venv" | xargs rm -r
⼆、grep命令
基本格式:grep  expression path
1.主要参数
[options]主要参数:
  -c:只输出匹配⾏的计数。
  -i:不区分⼤⼩写
  -h:查询多⽂件时不显⽰⽂件名。
  -l:查询多⽂件时只输出包含匹配字符的⽂件名。
  -n:显⽰匹配⾏及⾏号。
  -s:不显⽰不存在或⽆匹配⽂本的错误信息。
  -v:显⽰不包含匹配⽂本的所有⾏。
pattern正则表达式主要参数:
  \:忽略正则表达式中特殊字符的原有含义。
  ^:匹配正则表达式的开始⾏。
  $: 匹配正则表达式的结束⾏。
  \<:从匹配正则表达式的⾏开始。
  \>:到匹配正则表达式的⾏结束。
  [ ]:单个字符,如[A]即A符合要求。
  [ - ]:范围,如[A-Z],即A、B、C⼀直到Z都符合要求。
  .:所有的单个字符。
  * :有字符,长度可以为0。
2.使⽤
(1) 在某⽂件中查
  grep "xxx" filename
  另外,加上-n参数表⽰显⽰⾏数
  grep -n "xxx" filename
(2) 在多个⽂件中查
  grep "xxx" filename1 filename2 filename3 ...
  或者
  grep "xxx" *.py
(3) 在⽂件夹中递归地查
  grep -r "xxx" directory_name
  例如在当前⽂件夹下查
  grep -r "xxx" .
3.实例
  (1)grep 'test' d*  #显⽰所有以d开头的⽂件中包含 test的⾏
  (2)grep ‘test’ aa bb cc    #显⽰在aa,bb,cc⽂件中包含test的⾏
  (3)grep ‘[a-z]\{5\}’ aa   #显⽰所有包含每⾏字符串⾄少有5个连续⼩写字符的字符串的⾏
  (4)grep magic /usr/src  #显⽰/usr/src⽬录下的⽂件(不含⼦⽬录)包含magic的⾏
  (5)grep -r magic /usr/src  #显⽰/usr/src⽬录下的⽂件(包含⼦⽬录)包含magic的⾏
  (6)grep -w pattern files :只匹配整个单词,⽽不是字符串的⼀部分(如匹配’magic’,⽽不是’magical’),参考:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。