Linux文本查找工具——find命令的用法详解

使用find命令可以根据指定的条件去系统中遍历查找文件,还可以对这些文件进行后续的操作,和另一个查找文件的命令locate不同的地方在于find命令是实时精确查找,不做模糊匹配,但是可以使用通配符。而locate是通过一个数据库文件来模糊查找。两者之间locate速度快,但是find最精确。

find命令基本格式:

#语法格式:

#find  [查找路径]  [查找条件]  [查找后的动作]

find  /etc  -name  "passwd"  -exec  ls -l  {}  \;

查找路径:指定具体搜索路径,默认为当前路径下。

查找条件:可以根据文件名、大小、权限、日期等进行查找。没有指定条件的话默认为当前路径下所有文件

处理动作:对符合条件的文件作出的操作,如删除、复制。默认为输出到标准输出


查找条件表达式:

-name:根据文件名进行查找

find /etc -name "fstab"

-user | -group :根据文件的所有者或者所属组进行查找

find /etc/ -user root

-iname:不区分文件名大小写进行查找

-uid | -gid:根据UID或GID查找

find /etc/ -uid 500

-nouser | -nogroup:查找没有属主或属组的文件

-size:根据文件大小查找,可以定义K或M等常用单位,默认单位是字节,还可以加+-符号进行描述,代表大于或小于所定义的数值大小,如果不加+-符号是为精确查找,查找时会自动将小数点向上取整,如10K代表9-10K的都会显示

find / -size +1M

-type  f:根据文件类型查找,f为普通文件

-type  d:根据文件类型查找,d为目录

-type  b:根据文件类型查找,b为块设备

-type  l:根据文件类型查找,l为链接文件

find / ! -type d

find /etc -type l

find /etc -type d


-mtime:根据时间戳查找系统中N天修改的文件, -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前

find / -mtime -5

-ctime  [+|-]  n:查找系统中N天被改变文件状态的文件,-n和+n同上

-atime  [+|-]  n:查找系统中N天访问的文件,-n和+n同上

-amin  [+|-]  n:查找系统中N分钟访问的文件,-n和+n同上

-cmin  [+|-]  n:查找系统中N分钟被改变文件状态的文件,-n和+n同上

-mmin  [+|-]  n:查找系统中N分钟被改变文件数据的文件,-n和+n同上

-mindepth n:从n级目录开始进行查找

-maxdepth n:最多查找到n级子目录

-perm:根据权限查找

find / -type f -perm 644

-perm  /777:三组权限位里但凡有一组权限匹配就查找出来

-perm -644:只要包含了指定权限就查找出来,比如777包含644也会显示出来 


条件组合:

条件1  -a  条件2:逻辑与,当条件1与条件2都需要匹配才进行查找,也是默认动作,不加-a就默认是与

条件1  -o  条件2:逻辑或,当条件1与条件2中满足一个条件就查找出来

-not  | !:逻辑非


查找后的动作:

-print: 将查找出来的文件全部输出到标准输出。默认操作。

-exec:其后跟上需要执行的命令,将会对查找出来的文件执行相关命令。{ }和;之间有空格,{ }是后向引用之前查找出来的文件。

find /var/logs -type f -mtime +7 -ok rm { } \;

-ok:和-exec的作用相同,只不过在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

  • 发表于 2019-11-27 13:35
  • 阅读 ( 2869 )
  • 分类:Linux运维

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Liangjun
Liangjun

6 篇文章

作家榜 »

  1. Liangjun 6 文章
  2. 易备云官方 2 文章
  3. 小辉 1 文章
  4. zgb8888 1 文章
  5. 赵宇 1 文章
  6. cjy110 0 文章
  7. 李明明 0 文章
  8. ITPRO 0 文章