经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
Linux文件查找命令find与三剑客之grep
来源:cnblogs  作者:JZEason  时间:2021/12/21 0:28:36  对本文有异议

一、find

根据文件的名称或者属性查找文件。

  1. 语法格式:
  2. find [查找范围] [参数]
  3. 参数:
  4. -name : 按照文件的名字查找文件
  5. * :通配符
  6. -iname : 按照文件的名字查找文件(忽略大小写)
  7. -size : 按照文件的大小查询文件
  8. + 大于
  9. - 小于
  10. 没符号 等于
  11. -mtime : 按照修改时间去查询
  12. +(可以省略) n 天以前
  13. - n 天以内
  14. -atime :按照访问时间去查询(参数同上)
  15. -ctime :按照更改时间去查询(参数同上)
  16. -user :按照用户的属主查询
  17. -group : 按照用户的属组查询
  18. -type : 按照文件的类型查询
  19. d 文件夹
  20. l : 链接文件
  21. s : 套接字文件
  22. p 管道文件
  23. c : 字符文件
  24. b :磁盘文件
  25. f : 普通文件
  26. -perm : 按照文件的权限查询
  27. -inum : 根据index node号码查询
  28. -a : 并且(可以省略,默认时并且)
  29. -o : 或者
  30. -maxdepth : 查询的目录深度(必须放置与第一个参数位)
  31. -exec : find处理好的结果交给其他命令继续处理。

案例演示:

  1. 案例1:查询/etc目录下hosts文件
  2. [root@localhost ~]# find /etc/ -name 'hosts'
  3. 案例2:查询/etc目录下名称中包含hosts文件
  4. [root@localhost ~]# find /etc/ -name '*hosts*'
  5. 案例3:要求把/etc目录下,所有的普通文件打包压缩到/tmp目录
  6. [root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

知识储备:

  1. dd : 生成文件
  2. if :从什么地方读
  3. of : 写入到什么文件
  4. bs : 每次写入多少内容
  5. count : 写入多少次
  6. | 前面一个命令的结果交给后面一个命令处理
  7. xargs 把处理的文本变成以空格分割的一行
  8. `` : 提前执行命令,然后将结果交给其他命令来处理

二、grep

grep是Linux三剑客之一,是一种文本过滤器(根据文本内容过滤文件)。

Linux中grep经常搭配正则表达式一起使用,所以关于正则相关的知识请查看笔者之前的博客,里面有详细的介绍,这里就不再过多介绍了。

  1. 语法格式:
  2. grep [参数] [匹配规则] [操作对象]
  3. 参数:
  4. -n : 过滤文本时,将过滤出来的内容在文件内的行号显示出来
  5. -A 匹配成功之后,将匹配行的后n行显示出来
  6. -B 匹配成功之后,将匹配行的前n行显示出来
  7. -C 匹配成功之后,将匹配行的前后各n行显示出来
  8. -c : 只显示匹配成功的行数
  9. -o : 只显示匹配成功的内容
  10. -v : 反向过滤
  11. -q : 静默输出
  12. -i 忽略大小写
  13. -l : 匹配成功之后,将文本的名称打印出来
  14. -R|-r : 递归匹配
  15. -E 使用拓展正则表达式 等价于 egrep
  16. 需要使用拓展正则的相关符号:
  17. {} :匹配的次数
  18. {n} : 匹配n
  19. {n,} :至少匹配n
  20. {n,m} :匹配 n m
  21. {,m} :最多匹配m
  22. + :匹配至少有一个前导字符
  23. ? : 匹配一个或零个前导字符
  24. | :或

知识储备:

  1. 知识储备:
  2. $? 上一行命令执行的结果,0代表执行成功,其他数字代表执行失败。
  3. wc : 匹配行数
  4. -l : 打印匹配行数
  5. -c : 打印匹配的字节数
  6. eg:在/etc目录下,有多少个文件包含root
  7. grep -rl 'root' /etc/ | wc -l

搭配正则表达式相关案例演示:

  1. 案例1:在/etc/passwd文件中,匹配以ftp开头的行
  2. grep '^ftp' /etc/passwd
  3. 案例2:在/etc/passwd文件中,匹配以bash结尾的行
  4. grep 'bash$' /etc/passwd
  5. 案例3:匹配本机中有哪些ip
  6. ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'
  7. 案例4:要求将/etc/fstab中的去掉包含 # 开头的行,且要求 # 后至少有一个空格
  8. grep -vE '^#\ +' /etc/fstab
  9. 案例5:找出文件中至少有一个空格的行
  10. grep -E '\ +' xxx
  11. 案例6:将 nginx.conf 文件中以#开头的行和空行,全部删除
  12. grep -vE '^\ *#|^$' /etc/nginx/nginx.conf

原文链接:http://www.cnblogs.com/JZjuechen/p/15713316.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号