Linux中find用法
2016-05-17 23:35
537 查看
Linux下查找文件的命令有两个;locate 和 find
首先说下locate,locate这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项:
#locate
-i //查找文件的时候不区分大小写 比如:locate –i passwd
-n //只显示查找结果的前N行 比如:locate -n 5 passwd
Linux中find常见用法示例:
一、根据文件名查找
# -name //根据文件名查找(精确查找)
# -name "*.txt" //根据关键字查找
# -iname //根据文件名查找,但是不区分大小写
# -name a* 在当前目录下查找以a开始的文件
![](http://s5.51cto.com/wyfs02/M01/80/48/wKioL1c9TG3RzTYMAAAQXp5l-p4119.png)
![](http://s1.51cto.com/wyfs02/M01/80/4A/wKiom1c9TznBSpyOAAAW-PmYjrs915.png)
二、?表示 通配任意的单个字符
![](http://s2.51cto.com/wyfs02/M00/80/4A/wKiom1c9S7XQC_EiAAAK0zta1lQ223.png)
# -user username #按文件属主来查找
# -group groupname #按组来查找
![](http://s3.51cto.com/wyfs02/M00/80/48/wKioL1c9TM2xqqdXAAAPZ7-KeQ8683.png)
三、根据文件类型查找
-type -name
f // 普通文件
d //目录文件
l //链接文件
b //块设备文件
c //字符设备文件
p //管道文件
s //socket文件
eg.find .-type d|sort //查找当前所有目录并排序
![](http://s1.51cto.com/wyfs02/M01/80/48/wKioL1c9UU7A6PGCAAAVgXOjqMY640.png)
![](http://s5.51cto.com/wyfs02/M00/80/4A/wKiom1c9UTOx7Qp4AAALgOzBWV4768.png)
四、根据文件权限查找文件
-perm
#find /tmp -perm 755 //查找在/tmp目录下权限是755的文件
#find /tmp -perm +222 //表示只要有一类用户(属主,属组,其他)的 匹配写权限就行
#find /tmp -perm -222 //表示必须所有类别用户都满足有写权限
![](http://s5.51cto.com/wyfs02/M02/80/48/wKioL1c9Tb_T2HoEAAAnrFJpOz4725.png)
五、按文件大小查找
find / -size 250c (查找1,50字节大小的文件,c表示字节)
find / -size +2500c (查找大于1,500字节大小的文件,+表示大于)
find / -size +2500c (查找小于1,500字节大小的文件,-表示小于)
![](http://s4.51cto.com/wyfs02/M02/80/48/wKioL1c9Tgij30OrAAAfdtnNEH0405.png)
六、按时间查找
modification time(mtime)
当该文件的“内容数据”更改时,就会更新这个时间。 内容数据指的是文件的内容,而不是文件的属性或权限。
status time(ctime)
当该文件的“状态”(status)改变时,就会更新这个时间。举例来说,像是权限与属性被更改了,都会更新这个时间。
access time(atime)
当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,我们使用cat去读取/etc/man.config,就会更新该文件的atime了。
访问一个目录其atime改变,mtime ,ctime不变;
修改一个目录:在一个目录下touch一个文件,mtime与ctime会改变,atime不一定会变;
# find / -mtime -n +n 文件数据的最后修改时间(n为天数) (-n为n天内,+n为n天前)
# find / -atime -n +n文件数据的最后存取时间(n为天数)
# find / -ctime -n +n 文件数据的最后更改时间(n为天数)
# find / -mmin -n +n文件数据的最后修改时间(n为分钟)(-n为n分钟内,+n为n分钟前) # find / -amin -n +n文件数据的最后存取时间(n为分钟) # find / -cmin -n +n 文件数据的最后更改时间(n为分钟)
例如:
# find /Bit -mtime -2 在/Bit下查最近两天内改动过的文件
# find /Bit -atime -1 查/Bit下1天之内被存取过的文件
# find /Bit -mmin -500 在/Bit下查最近500分钟内改动过的文件
![](http://s3.51cto.com/wyfs02/M01/80/4A/wKiom1c9TWOD-Jp7AAAaFZNJd3A828.png)
![](http://s3.51cto.com/wyfs02/M00/80/47/wKioL1c9TAjg5IcnAAASG7fUhP4669.png)
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
![](http://s3.51cto.com/wyfs02/M02/80/48/wKioL1c9Tw_AmdEXAAAay_KsBME040.png)
七、使用mindepth和maxdepth限定搜索指定目录的深度 在root目录及其子目录下查找test文件。
在root目录下及其最大2层深度的子目录中查找test文件.
在root目录下及其最大3层深度的子目录中查找test文件.
在3-5层中优先查找文件内容名为test的文件
![](http://s1.51cto.com/wyfs02/M01/80/48/wKioL1c9VCeAqXtfAAAoTFP9t_Q717.png)
八、其他例子
1、无错误查找:
# find / -name access_log 2 >/dev/null
2、逻辑
-and 条件与 -or 条件或
3、查找字符串
# find . -name '*.html' -exec grep 'mailto:'{}
4、其它:
# find / -empty 空白文件、空白文件夹、没有子目录的文件夹
# find / -false 查找系统中总是错误的文件
# find / -fstype type 找存在于指定文件系统的文件,如type为ext2
# find / -gid n 组id为n的文件
# find -name april* fprint file
在当前目录下查找以april开始的文件,并把结果输出到file中
# find -name ap* -o -name may* 查找以ap或may开头的文件
# find /mnt -name tom.txt -ftype vfat
在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
# find /mnt -name t.txt ! -ftype vfat
在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
# find /tmp -name wa* -type l
在/tmp下查找名为wa开头且类型为符号链接的文件
# find /home -mtime -2 在/home下查最近两天内改动过的文件
# find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
# find . -size +3000k -exec ls -ld {} ;
# find *.c -exec cp '{}' /tmp ';'
首先说下locate,locate这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项:
#locate
-i //查找文件的时候不区分大小写 比如:locate –i passwd
-n //只显示查找结果的前N行 比如:locate -n 5 passwd
Linux中find常见用法示例:
一、根据文件名查找
# -name //根据文件名查找(精确查找)
# -name "*.txt" //根据关键字查找
# -iname //根据文件名查找,但是不区分大小写
# -name a* 在当前目录下查找以a开始的文件
![](http://s5.51cto.com/wyfs02/M01/80/48/wKioL1c9TG3RzTYMAAAQXp5l-p4119.png)
![](http://s1.51cto.com/wyfs02/M01/80/4A/wKiom1c9TznBSpyOAAAW-PmYjrs915.png)
二、?表示 通配任意的单个字符
![](http://s2.51cto.com/wyfs02/M00/80/4A/wKiom1c9S7XQC_EiAAAK0zta1lQ223.png)
# -user username #按文件属主来查找
# -group groupname #按组来查找
![](http://s3.51cto.com/wyfs02/M00/80/48/wKioL1c9TM2xqqdXAAAPZ7-KeQ8683.png)
三、根据文件类型查找
-type -name
f // 普通文件
d //目录文件
l //链接文件
b //块设备文件
c //字符设备文件
p //管道文件
s //socket文件
eg.find .-type d|sort //查找当前所有目录并排序
![](http://s1.51cto.com/wyfs02/M01/80/48/wKioL1c9UU7A6PGCAAAVgXOjqMY640.png)
![](http://s5.51cto.com/wyfs02/M00/80/4A/wKiom1c9UTOx7Qp4AAALgOzBWV4768.png)
四、根据文件权限查找文件
-perm
#find /tmp -perm 755 //查找在/tmp目录下权限是755的文件
#find /tmp -perm +222 //表示只要有一类用户(属主,属组,其他)的 匹配写权限就行
#find /tmp -perm -222 //表示必须所有类别用户都满足有写权限
![](http://s5.51cto.com/wyfs02/M02/80/48/wKioL1c9Tb_T2HoEAAAnrFJpOz4725.png)
五、按文件大小查找
find / -size 250c (查找1,50字节大小的文件,c表示字节)
find / -size +2500c (查找大于1,500字节大小的文件,+表示大于)
find / -size +2500c (查找小于1,500字节大小的文件,-表示小于)
![](http://s4.51cto.com/wyfs02/M02/80/48/wKioL1c9Tgij30OrAAAfdtnNEH0405.png)
六、按时间查找
modification time(mtime)
当该文件的“内容数据”更改时,就会更新这个时间。 内容数据指的是文件的内容,而不是文件的属性或权限。
status time(ctime)
当该文件的“状态”(status)改变时,就会更新这个时间。举例来说,像是权限与属性被更改了,都会更新这个时间。
access time(atime)
当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,我们使用cat去读取/etc/man.config,就会更新该文件的atime了。
访问一个目录其atime改变,mtime ,ctime不变;
修改一个目录:在一个目录下touch一个文件,mtime与ctime会改变,atime不一定会变;
# find / -mtime -n +n 文件数据的最后修改时间(n为天数) (-n为n天内,+n为n天前)
# find / -atime -n +n文件数据的最后存取时间(n为天数)
# find / -ctime -n +n 文件数据的最后更改时间(n为天数)
# find / -mmin -n +n文件数据的最后修改时间(n为分钟)(-n为n分钟内,+n为n分钟前) # find / -amin -n +n文件数据的最后存取时间(n为分钟) # find / -cmin -n +n 文件数据的最后更改时间(n为分钟)
例如:
# find /Bit -mtime -2 在/Bit下查最近两天内改动过的文件
# find /Bit -atime -1 查/Bit下1天之内被存取过的文件
# find /Bit -mmin -500 在/Bit下查最近500分钟内改动过的文件
![](http://s3.51cto.com/wyfs02/M01/80/4A/wKiom1c9TWOD-Jp7AAAaFZNJd3A828.png)
![](http://s3.51cto.com/wyfs02/M00/80/47/wKioL1c9TAjg5IcnAAASG7fUhP4669.png)
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
![](http://s3.51cto.com/wyfs02/M02/80/48/wKioL1c9Tw_AmdEXAAAay_KsBME040.png)
七、使用mindepth和maxdepth限定搜索指定目录的深度 在root目录及其子目录下查找test文件。
在root目录下及其最大2层深度的子目录中查找test文件.
在root目录下及其最大3层深度的子目录中查找test文件.
在3-5层中优先查找文件内容名为test的文件
![](http://s1.51cto.com/wyfs02/M01/80/48/wKioL1c9VCeAqXtfAAAoTFP9t_Q717.png)
八、其他例子
1、无错误查找:
# find / -name access_log 2 >/dev/null
2、逻辑
-and 条件与 -or 条件或
3、查找字符串
# find . -name '*.html' -exec grep 'mailto:'{}
4、其它:
# find / -empty 空白文件、空白文件夹、没有子目录的文件夹
# find / -false 查找系统中总是错误的文件
# find / -fstype type 找存在于指定文件系统的文件,如type为ext2
# find / -gid n 组id为n的文件
# find -name april* fprint file
在当前目录下查找以april开始的文件,并把结果输出到file中
# find -name ap* -o -name may* 查找以ap或may开头的文件
# find /mnt -name tom.txt -ftype vfat
在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
# find /mnt -name t.txt ! -ftype vfat
在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
# find /tmp -name wa* -type l
在/tmp下查找名为wa开头且类型为符号链接的文件
# find /home -mtime -2 在/home下查最近两天内改动过的文件
# find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
# find . -size +3000k -exec ls -ld {} ;
# find *.c -exec cp '{}' /tmp ';'
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍