Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数说明 :

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去n天内被修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id 是 n 的文件

按照文件名搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索

按照文件大小搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小: 按照指定大小搜索文件

这里的“+”的意思是搜索比指定大小还要大的文件, “-”的意思是搜索比指定大小还要小的文件。

 -size n[cwbkMG]File uses n units of space.  The following suffixes can be used:`b'    for 512-byte blocks (this is the default if no suffix is used)`c'    for bytes`w'    for two-byte words`k'    for Kilobytes (units of 1024 bytes)`M'    for Megabytes (units of 1048576 bytes)`G'    for Gigabytes (units of 1073741824 bytes)The size does not count indirect blocks, but it does count blocks in sparse files that are not actually allocated.  Bear in mind that the `%k' and`%b' format specifiers of -printf handle sparse files differently.  The `b' suffix always denotes 512-byte blocks and  never  1  Kilobyte  blocks,which is different to the behaviour of -ls.

 

按照修改时间搜索
Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个
时间,我们也可以按照时间来搜索文件。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索

这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说
说“[+-]”时间的含义。
 -5:代表 5 天内修改的文件。
 5:代表前 5~6 天那一天修改的文件。
 +5:代表 6 天前修改的文件。

按照权限搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式: 查找文件权限全部包含“权限模式”的文件
-perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件

按照所有者和所属组搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件 

按照所有者和所属组搜索时, “-nouser”选项比较常用,主要用于查找垃圾文件
只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在
Linux 中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者
 按照文件类型搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件 

逻辑运算符

[root@localhost ~]# find 搜索路径 [选项] 搜索内容 

选项:

-not: not 逻辑非
1) -a: and 逻辑与
find 命令也支持逻辑运算符选项,其中-a 代表逻辑与运算,也就是-a 的两个条件都成立, find 搜
索的结果才成立。举个例子:

[root@localhost ~]# find . -size +2k -a -type f
#在当前目录下搜索大于 2KB,并且文件类型是普通文件的文件

2) -o: or 逻辑或
-o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立, find 命令就可以找到结果。例
如:

[root@localhost ~]# find . -name cangls -o -name bols
./cangls
./bols

3) -not: not 逻辑非
-not 是逻辑非,也就是取反的意思。举个例子:

[root@localhost ~]# find . -not -name cangls
#在当前目录下搜索文件名不是 cangls 的文件

其他选项
1) -exec 选项
这里我们主要讲解两个选项“ -exec”和“ -ok”, 这两个选项的基本作用非常相似。 我们先来看
看“ -exec”选项的格式。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令 2 {} \;

其次,这个选项的作用其实是把 find 命令的结果交给由“ -exec”调用的命令 2 来处理。“ {}”就
代表 find 命令的查找结果。
2) -ok 选项
“-ok”选项和“ -exec”选项的作用基本一致, 区别在于:“ -exec”的命令 2 会直接处理,而不询
问;“ -ok”的命令 2 在处理前会先询问用户是否这样处理, 在得到确认命令后,才会执行。

测试:

[root@iZbp145axkc98giot5b448Z find]# touch abc
[root@iZbp145axkc98giot5b448Z find]# touch abcd
[root@iZbp145axkc98giot5b448Z find]# ll
total 0
-rw-r--r-- 1 root root 0 Feb 19 13:48 abc
-rw-r--r-- 1 root root 0 Feb 19 13:48 abcd
[root@iZbp145axkc98giot5b448Z find]# touch ababab
[root@iZbp145axkc98giot5b448Z find]# touch ABC
[root@iZbp145axkc98giot5b448Z find]# ll
total 0
-rw-r--r-- 1 root root 0 Feb 19 13:48 ababab
-rw-r--r-- 1 root root 0 Feb 19 13:48 abc
-rw-r--r-- 1 root root 0 Feb 19 13:49 ABC
-rw-r--r-- 1 root root 0 Feb 19 13:48 abcd
[root@iZbp145axkc98giot5b448Z find]# find . -name "ab*"
./abcd
./abc
./ababab
[root@iZbp145axkc98giot5b448Z find]# find . -iname "abc"
./abc
./ABC
[root@iZbp145axkc98giot5b448Z find]# vim abc
[root@iZbp145axkc98giot5b448Z find]# ll
total 4
-rw-r--r-- 1 root root   0 Feb 19 13:48 ababab
-rw-r--r-- 1 root root 251 Feb 19 13:50 abc
-rw-r--r-- 1 root root   0 Feb 19 13:49 ABC
-rw-r--r-- 1 root root   0 Feb 19 13:48 abcd
[root@iZbp145axkc98giot5b448Z find]# ll -h
total 4.0K
-rw-r--r-- 1 root root   0 Feb 19 13:48 ababab
-rw-r--r-- 1 root root 251 Feb 19 13:50 abc
-rw-r--r-- 1 root root   0 Feb 19 13:49 ABC
-rw-r--r-- 1 root root   0 Feb 19 13:48 abcd
[root@iZbp145axkc98giot5b448Z find]# vim abc
[root@iZbp145axkc98giot5b448Z find]# ll -h
total 4.0K
-rw-r--r-- 1 root root    0 Feb 19 13:48 ababab
-rw-r--r-- 1 root root 1.9K Feb 19 13:51 abc
-rw-r--r-- 1 root root    0 Feb 19 13:49 ABC
-rw-r--r-- 1 root root    0 Feb 19 13:48 abcd
[root@iZbp145axkc98giot5b448Z find]# find . -size +1k
.
./abc

[root@iZbp145axkc98giot5b448Z find]# find . -mtime -5
.
./abcd
./abc
./ababab
./ABC
[root@iZbp145axkc98giot5b448Z find]# find . -perm 777
[root@iZbp145axkc98giot5b448Z find]# find . -perm 644
./abcd
./abc
./ababab
./ABC
[root@iZbp145axkc98giot5b448Z find]# find . -type f
./abcd
./abc
./ababab
./ABC
[root@iZbp145axkc98giot5b448Z find]# find . -size +1k -a -type f
./abc
[root@iZbp145axkc98giot5b448Z find]# ll
total 4
-rw-r--r-- 1 root root    0 Feb 19 13:48 ababab
-rw-r--r-- 1 root root 1931 Feb 19 13:51 abc
-rw-r--r-- 1 root root    0 Feb 19 13:49 ABC
-rw-r--r-- 1 root root    0 Feb 19 13:48 abcd
[root@iZbp145axkc98giot5b448Z find]# find . -name "ab*" -exec rm -rf {} \;
[root@iZbp145axkc98giot5b448Z find]# ll
total 0
-rw-r--r-- 1 root root 0 Feb 19 13:49 ABC
[root@iZbp145axkc98giot5b448Z find]# man find
[root@iZbp145axkc98giot5b448Z find]#

Linux之find 命令相关推荐

  1. linux下find命令的使用和总结

    背景:find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用. 1 前言 我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样&quo ...

  2. linux 判断某个命令是否安装

    linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' ...

  3. linux下比较文件并输出,Linux使用diff命令比较文件找出文件之间相同的部分

    如果你需要比较系统文件的内容,那么你就会是使用到diff命令,可找出文件之间相同的部分,下面小编就给大家详细介绍下Linux diff命令的用法. diff 命令是 linux上非常重要的工具,用于比 ...

  4. Linux的watch命令--实时监测命令的运行结果

    watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.直接在 watch 后面接你想运行的 ...

  5. linux的strace命令

    linux的strace命令 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的参数并返回符号形式的值.strace 从内核接收信息,而且不 ...

  6. Linux下addr2line命令用法

    Linux下addr2line命令用于将程序指令地址转换为所对应的函数名.以及函数所在的源文件名和行号.当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2li ...

  7. Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息

    java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...

  8. linux命令注入,Linux kernel本地命令注入漏洞

    Linux kernel本地命令注入漏洞 2005-10-19 eNet&Ciweek Linux kernel 2.2.6 Linux kernel 2.2.5 Linux kernel 2 ...

  9. linxu passwd 给linux用户设置密码 命令

    [root@localhost ~]# passwd # 修改 root 用户的密码 passwd 给linux用户设置密码 命令 passwd www 直接passwd是当前用户设置密码 非交互式修 ...

  10. Linux之链接命令

    Linux之链接命令 1. 链接命令的介绍 链接命令是创建链接文件,链接文件分为: 软链接 硬链接 命令 说明 ln -s 创建软链接 ln 创建硬链接 2. 软链接 类似于Windows下的快捷方式 ...

最新文章

  1. 搭建S3C6410开发板的测试环境
  2. 【转】 ubuntu adduser 命令学习
  3. Linux 条件变量使用细节(为何调用 pthread_cond_wait 前加锁,函数内部解锁,返回时又加锁)
  4. PHP的composer安装问题
  5. 博客园——记录我的开始
  6. websocket中发生数据丢失_什么是WebSocket,它与HTTP有何不同?
  7. 【Xamarin挖墙脚系列:最重要的布局ListView】
  8. MVC中使用ajax传递json数组
  9. apache 统计404日志_Apache监控与调优(四)Apachetop监控
  10. git通过指令查看某一个已经修改的文件的改动
  11. 第八章 丹药吃坏人了
  12. 4、IO--字节转换流
  13. 精心整理的十个必须要知道CSS+DIV技巧
  14. DZ60通过IIC读取LM75温度遇到问题解决方法
  15. 银河麒麟V10(Kylin Linux V10)安装ElasticSearch
  16. 第二周——团队项目(小小大佬带飞队)
  17. access怎么做批注_怎样做批注
  18. 通过故障恢复控制台修复xp系统引导文件丢失的方法
  19. python+selenium爬虫搜索今日头条文章并爬取文章相关数据(点赞、评论等)
  20. 从2018年以太坊统计数据看区块链发展趋势

热门文章

  1. 【C++】上下取整取整函数
  2. 姚期智是计算机领域的科学家吗,他是顶级计算机专家,清华最受欢迎教授,在国际上与杨振宁齐名...
  3. 计算机桌面刷新位置不可用,Win10开机提示桌面位置不可用的三种解决办法
  4. 阿木有专门讲MAVROS功能包节点的课,有讲MAVROS怎么订阅消息,发布消息。看来MAVROS这边的编程不用太担心。
  5. 一文了解K8s-概念详解
  6. 【Django】Python+Django 图文教程
  7. 运筹学基础(名词解释题总结)
  8. LINUX系统文件指令操作
  9. 判断手势_科目一题库里的4道难题,拿不到满分也正常,交警手势不好判断
  10. Cesium之鼠标事件绑定和移除