Linux的find命令

Linux的find命令

find命令是用来在指定目录下查找文件的。任何位于参数之前的字符串都将视为欲查找的目录名。

如果使用该命令,不设置任何参数,则find命令将在当前目录下查找子目录和文件。并且查找到的子目录和文件全部进行显示。

find语法

find (选项) (参数)

常用的选项参数

  • -name <范本样式>:指定字符串作为寻找文件或目录的范本样式

  • -regex<范本样式>:指定字符串作为寻找文件或目录的范本样式

  • -size<文件大小>:查找符合指定的文件大小的文件

  • -typ<文件类型>:只寻找符合指定的文件类型的文件

  • -path<范本样式>:指定字符串作为寻找目录的范本样式

  • -perm<权限数值>:查找符合指定的权限数值的文件或目录

  • -help或——help:在线帮助

  • -false:将find指令的回传值皆设为False

  • -true:将find指令的回传值皆设为True

  • -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算

  • -cmin<分钟>:查找在指定时间之时被更改过的文件或目录

  • atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算

  • ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算

  • -gid<群组识别码>:查找符合指定之群组识别码的文件或目录

  • -group<群组名称>:查找符合指定之群组名称的文件或目录

  • uid<用户识别码>:查找符合指定的用户识别码的文件或目录

  • user<拥有者名称>:查找符和指定的拥有者名称的文件或目录

还有一些参数忽略为列举:

具体参考:Linux命令大全—find命令

实例

根据文件或者正则表达式进行匹配

  1. 列出当前目录及子目录下的所有文件和文件夹
find .
  1. /home目录下查找以.txt结尾的文件名
find /home -name "*.txt"

同上,忽略大小写,使用iname

find /home -iname "*.txt"
  1. 在当前目录及子目录查找所有以.txt.cfg结尾的文件
find . -name "*.txt" -o -name "*cfg"
  1. 匹配文件路径或者文件
find /usr/ -path "*local*"
  1. 基于正则表达式匹配文件路径
find . -regex ".*\(\.txt\|\.pdf\)$"
  1. 忽略大小写的正则匹配
find . -iregex ".*\(\.txt\|\.pdf\)$"

否定参数

find /home ! -name "*.txt"

根据文件类型进行查找

find . -type 类型参数

类型参数列表:

  • f:普通文件

  • l:符号连接

  • d:目录

  • c:字符设备

  • b:块设备

  • s:套接字

  • p:Fifo

eg:

find . -type f

find . -type d

根据文件时间戳进行搜索

find . -type f 时间戳

Linux文件系统每个文件都有三种时间戳

  • 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。

  • 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。

  • 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

搜索最近7天内被访问过的所有文件

find . -type -atime -7

搜索恰好在7天前被访问过的所有文件

find . -type -atime 7

搜索超过七天内被访问过的所有文件

find . -type -atime +7

搜索访问时间超过10分钟的所有文件

find . -type f -amin +10

根据文件大小匹配

find . -type f -size 文件大小单元
  • b:块(512字节)

  • c:字节

  • w:字(2字节)

  • k:千字节

  • M:兆字节

  • G:G字节

搜索大于10KB的文件

find . -type f -size +10k

搜索小于10KB的文件

find . -type f -size -10k

搜索等于10KB文件

find . -type f -szie 10k

删除匹配文件

find . -type f -name "*.txt" -delete

根据文件权限进行匹配

搜索当前目录下权限为777的文件

find . -type f -perm 777

找出当前目录下权限不是700的txt文件

find . -type f -name "*.txt" ! -perm 700

找出当前目录用户zhang拥有的所有文件

find . -type f -user zhang

找出当前目录用户组gzhang拥有的所有文件

find . -type f -group gzhang

查找长度为0的文件

find . -type f -empty

猜你喜欢

转载自blog.csdn.net/qq_33689414/article/details/79111178