Linux shell 学习笔记 之 find命令的使用
2014-04-25 22:33
495 查看
Linux shell 学习笔记 之 find命令的使用
今天我们来谈谈Linux下find命令的使用,find命令常用于在unix/linux 下进行文件的查找。一.命令的工作方式:
find命令的工作方式:沿着文件的层次结构向下遍历,当匹配到符合条件的文件,则执行相应的操作。
二 find命令的使用
1.列出指定目录下的所有文件以及文件夹
$ find basepath # basepath 即为要查找的位置,find 命令会从该位置向下查找。
例如 find /home/lyf -print #打印出/home/lyf 目录下的所有文件和目录列表
-print 选项指明打印出匹配文件的文件名(路径)
2.根据文件名进行搜索
$ find basepath -name "*.txt" -print #查找basepath及其子目录下所有txt格式的文件列表
-name 选项的参数指定了文件名所必须匹配的字符串。
除了使用name选项还可以使用-iname选项
-iname选项与-name选项类似,但在进行查找匹配的时候会忽略掉大小写。
-path的参数可以使用通配符来匹配文件路径或文件
find还可以使用“!”否定参数的含义
$ find basepath ! -name "*.txt" -print #[b]查找basepath及其子目录下所有不是txt格式的文件列表.[/b]
3.按照目录的深度进行搜索
$ find basepath -maxdepth 2 -type -f -print #最多向下遍历两级子目录
$ find basepath -mindepth 2 -type -f print #从当前目录的2层子目录中开始遍历
find命令在使用的时候会遍历所有的子目录,在这里我们可以采用maxdepth与mindepth限制进行遍历的深度。
4.按照文件的类型进行查找
我们知道在unix/linux下系统将一切都视为文件,然而文件也具有不同的类型,如普通的文件,字符设备,目录,块设备等等。
在使用find命令的时候我们可以使用-type 选项对文件进行相应的过滤。
$ find basepath -type d -print #只列出所有的目录
$ find basepath -type f -print #只列出所有的文件
[b]$ find basepath -type l -print #只列出所有符合链接[/b]
[b]$ find basepath -type c -print #只列出所有的字符设备[/b]
[b] $ find basepath -type b -print #只列出所有的块设备[/b]
[b] $ find basepath -type s -print #只列出所有的套接字[/b]
[b]$ find basepath -type p -print #只列出所有的FIFO[/b]
5.按照文件的时间进行查找(包括文件最后被访问的时间atime,文件最后被修改的时间mtime,文件元数据改变时间ctime)
先对这几个时间说说
atime(访问时间):即用户最近一次访问文件的时间
mtime(修改时间):即文件内容最后一次被修改的时间
ctime(变化时间):文件元数据(metadata,如权限或所有权)最后一次被改变的时间。
选项 -atime,-mtime,-ctime可以作为find命令的时间参数,它们可以使用整数值的形式给出,单位为天,这些值可以带有符
号 -(小于),+(大于).
$ find basepath -type f -atime +6 -print # 列出访问时间超过6天的所有文件
$ find basepath -type f -atime 6 -print #列出访问时间恰好为6天的所有文件
$ find basepath -type f -atime -6 -print #列出访问时间在6天前的所有文件
-mtime 与-ctime选项与 -atime选项使用方法相同。
除了使用基于单位为天的参数选项 -atime ,-ctime,-mtime 还可以使用基于分钟的计数单位如
-amin(访问时间),-mmin(修改时间),-cmin(改变时间) 这些选项都是基于分钟计数的.
除了使用上述的选项外在使用find命令的时候还可以使用-newer选项,使用-newer,我们可以指定一个用于比较时间戳的参考
文件,然后找出比参考文件更新的(更长的修改时间)所有文件。
$ find basepath -type f -newer a.txt -print # 找出比a.txt 修改时间更长的所有文件
6.基于文件的大小进行查找,在使用find命令的时候我们可以按照文件的大小进行查找。
$ find basepath -type f -size +2k #列出所有大于2k的文件
除了k 之外还有如下的参数可以供选择:
b 块(512字节)
c 字节
w 字(2字节)
k 千字节
M 兆字节
G 千兆字节
7.基于文件的权限和所有权进行匹配。
$ find basepath -type f -perm 644 -print #列出目录下文件权限为644 的所有文件
也可以按照文件的所有权进行文件的匹配
$ find basepath -type f -user root -print #列出目录下root用户所拥有的所有文件
相关文章推荐
- Linux之find命令使用 ---Linux学习笔记(4)
- find命令的exec参数使用---Linux学习笔记
- find命令的xargs参数的使用---Linux学习笔记
- linux shell脚本学习笔记二 使用结构化命令
- Docker学习笔记2--频繁使用的相关命令
- 写得蛮好的linux学习笔记(主要是linux shell命令)
- git 学习笔记二-- 进阶命令的使用
- windows统计数据库连接数批处理及find和findstr查找命令使用--笔记
- java学习笔记-使用javadoc命令生成API文档
- find 命令学习笔记
- Linux学习---find命令使用技巧
- 【Git学习笔记】git log命令使用
- 每天一个linux命令(22):文件查找命令 find 命令的参数详解---学习笔记
- 高效使用Vim编辑器--Vim编辑器常用命令学习笔记
- linux shell脚本学习xargs命令使用详解
- vagrant学习笔记 - 基本命令的使用
- linux学习笔记--ps命令使用方法
- Linux Shell 学习笔记(二) 命令
- linux shell 脚本攻略学习5---find命令详解
- DOS命令个人学习使用笔记