1. 根据文件名检索
find%20命令中的%20-name%20选项可以根据文件名称进行检索(区分大小写)。如需要忽略文件名中的大小写,可以使用%20-iname%20选项。
都支持%20wildcards。如:
?%20可以表示任意一个单一的符号
*%20可以表示任意数量(包括%200)的未知符号
find%20/usr%20-name%20'*.txt':%20查找%20/usr%20目录下所有文件名以%20.txt%20结尾的文件
find%20/tmp%20-name%20wa*%20-type%20l%20在/tmp下查找名为wa开头且类型为符号链接的文件。find%20/mnt%20-name%20tom.txt%20-ftype%20vfat%20在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件。根据关键字查找find.-name"*.log"%20在当前目录查找以.log结尾的文件。
假如需要在搜索时匹配某个文件或目录的完整路径,而不仅仅是匹配文件名。可以使用%20-path%20或%20-ipath%20选项。
如:查找%20/usr%20下所有文件名以%20.txt%20结尾的文件或目录,且该文件的父目录必须是%20src。
可以使用以下命令:find%20/usr%20-path%20'*/src/*.txt'
2.%20根据文件类型检索
只想搜索得到文件或目录,即不想它们同时出现在结果中。可以使用%20-type%20选项指定文件类型。
-type 选项最常用的参数如下:
f: 文件
d: 目录
l: 符号链接
find /usr -type d -name 'python*'
检索 /usr 下所有文件名以 python 开头的目录
3. 检索空文件
-empty 选项用来检索为空的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。
find ~ -type d -empty
检索用户主目录下所有的空目录
4. 反义匹配
对当前的匹配条件进行“反义”(类似于逻辑非操作)。
如需要检索 /usr 下所有文件名不以 .txt 为后缀的文件。
可以使用以下命令:find /usr -type f ! -name '*.txt'
也可以“翻转”任何其他的筛选条件,如:
find /usr -type f ! -empty 检索 /usr 下所有内容不为空的文件
5. 根据时间日期进行检索
需要根据文件创建或修改的时间进行检索。Linux 系统中,与文件相关联的时间参数有以下三种:
修改时间(Modification time):最后一次文件内容有过更改的时间点
访问时间(Access time):最后一次文件有被读取过的时间点
变更时间(Change time):最后一次文件有被变更过的时间点(如内容被修改,或权限等 metadata 被修改)
与此对应的是 find 命令中的 -mtime,-atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
-mtime 2:该文件 2 天前被修改过
-mtime -2:该文件 2 天以内被修改过
-mtime +2:该文件距离上次修改已经超过2 天时间
find /usr -type f -mtime 2: 检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以天为单位时间有点长,还可以使用 -mmin,-amin,-cmin 三个选项。
find /usr -type f -mtime +50 -mtime -100
检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5
检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件