Linux文件查找、三剑客、正则表达式缩

Linux文件查找
1.find查找概述
为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。
find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命令是Linux下必须掌握的。
*find 命令的基本语法如下*

命令路径选项表达式动作
find[path…][options][expression][action]
查找地区妹纸18-25岁约?

是linux里面的一个实时查找工具,通过制定路径完成文件查找
find [options] ….. [查找路径] [查找条件] [处理动作]
查找路径:查找的位置,默认是当前文件夹
查找条件:制定查找的标准,文件名、大小、类型、日期等等
处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上
2.find查找示例
*以下列出所有find常用的选项*
1.find名称查找

#1.创建文件

2.find大小查找

#1.查找大于5M的文件

3.find类型查找

# f 文件

4.find时间查找

#1.创建测试文件(后期shell会讲)
5.find用户查找

#查找属主是jack

6.find权限查找

#精切匹配644权限

查找条件

  • 根据文件名查找
    • -name 指定名称,可以使用正则
    • -iname 忽略大小写
    • -links n 引用次数为n的文件
    • -regex 后面跟完整路径,而不是文件名, 必须整个路径完全匹配
  • 制定搜索的层级
    • -maxdepth level 最大的搜索深度,指定的目录为第1层
    • -mindepth level 最小的搜索深度,包括level层
  • 根据属主、属组来查找
    • -user username 查找属主为username的文件
    • -group groupname 查找属组为groupname的文件
    • -uid id 查找属主为id的文件
    • -gid id 查找属组为id的文件
    • -nouser 查找没有属主的文件
    • -nogroup 查找没有属组的文件

m[root@192 test]#chown qiao b

  • 根据文件类型 -type
    • d 目录
    • f 文件
    • l 符号链接
    • s 套接字
    • b 块设备
    • c 字符设备
    • p 管道文件

m[root@192 test]#find -type f

  • 空文件或者空目录
    • -empty

m[root@192 test]#find -empty

  • 条件
    • 与 -a
    • 或 -o
    • 非 -not

m[root@192 test]#find -empty -o -type d
m[root@192 test]#find -empty -not -type d
./b

  • 摩根定律
    • 非(A或者B) 非A 且非B
    • 非(A且B)非A或非B

m[root@192 ~]#find !(-empty -a -tpye d)

  • 排除目录
    • -path

[root@localhost test]#find /etc -name *_config

  • 按照大小来查找
    • -size # (#-1,#] 不包括#-1,包括#
    • -size -# [0,#-1] 包括#-1
    • -size +# (#,……)
  • 按照时间来查找
    • -amin
    • -mmin
    • -cmin
    • -atime # [#,#+1)
    • -atime -# (0,#)
    • -atime +# [#+1,….]
    • 查找7天以后的文件 find -atime +7
    • -mtime
    • -ctime
    • 以分钟为单位

3 处理动作
find动作处理,比如查找到一个文件后,需要对文件进行如何处理, find的默认动作是 -print
1.find查找后的动作命令示例

动作含义
-print打印查找到的内容(默认)
-ls以长格式显示的方式打印查找到的内容
-delete删除查找到的文件(仅能删除空目录)
-ok后面跟自定义 shell 命令(会提示是否操作)
-exec后面跟自定义 shell 命令(标准写法 -exec

– -print 默认的处理动作,显示在屏幕上
– -ls 类似于ls -l 显示长格式
– -delete 删除查找到的文件
– -fls file 将查找的结果以长格式保存到文件中
– -ok command {} \; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否要执行
find -size 2M -ok rm -rf {} \;
找到2M的文件,删除,提示删除

  • -exec command {} \; 对查到的每一个文件执行command命令,不需要确认,一次性交给后面命令处理

find -size 2M -exec rm -rf {} \;
m[root@192 test]#find -size 2M -delete

#1.使用-print打印查找到的文件

2.使用find命令结合xargs

  • 有的命令不支持管道
  • 命令参数过长
  • xargs 将管道前面的内容一条一条的交给后面命令处理

echo file{1..50000}|xargs touch

  • 一般会跟find使用

#xargs将前者命令查找到的文件作为一个整体传递后者命令的输入
3.find逻辑运算符

符号作用
-a
-o
-not|!

#1.查找当前目录下,属主不是hdfs的所有文件

4.find相关练习题

1.查找/tmp目录下,属主不是root,且文件名不以f开头的文件
linux三剑客
三剑客详解
grep
awk
sed
grep
grep [option] “模式” file
option

–color=auto 对匹配到的行添加颜色
正则表达式元字符

  • 字符匹配
    • . 任意单个字符
    • [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]
    • [^] 取反
    • [:upper:] 大写字母
    • [:lower:] 小写字母
    • [:alnum:] 字母和数字
    • [:alpha:] 大小写字母
    • [:digit:] 数字

m[root@192 test]#grep ‘[[:digit:]]\+’ c

  • 分组

grep “\(c\|C\)at” a

  • 向后引用
    • \1 前面第一个括号出现的内容匹配完成之后再后面在出现一次
    • \2 前面第二个括号出现的内容匹配完成之后再后面在出现一次

grep “\(l..e\).*\1” c

  • 扩展正则表达式
    • 与正则表达式的区别是不需要转义

grep -E “(c|C)at” a不需要加\进行转义
链接:https://www.cnblogs.com/coderxueshan/p/17933844.html
(版权归原作者所有,侵删)

Linux文件查找、三剑客、正则表达式插图

本文链接:https://www.yunweipai.com/46925.html

(完)