Find 基础了解
find 是用于文件系统中查找文件或目录的命令行工具
基本语法
find [目录路径] [表达式]
首先我们需要了解,find 命令要指定所查询的目录路径,之后 find 命令会根据你给出的约束条件查询出所符合的文件或目录进行标准输出。
对于 find 应用的主要了解内容便是其常用选项,以及 -exec 控制选项
常用选项
1. -name 根据文件名查找文件
find [目录] -name "文档名称"
对于文档名称可使用通配符*进行一类文件进行查询,例如"*.txt"可查找目录下的所有以 .txt 为结尾的文件。
当然对于一些只记得名字,而忘记文件名的大小写时,可用 -iname 进行忽略大小写的查询。
2. -type 根据文件类型查找文件
find [目录] -type 类型
对于文件类型常用类型大致为,d目录文件、f普通文件、l快捷方式。
3. -size 根据文件大小查找文件
find [目录] -size +/-文件大小
-size 运用 +/- 来查找大于或小于指定参数的文件。
也可以组合两个 -size 选项,来指定特定大小范围内的文件。
find [目录] -size +文件大小 -size -文件大小
当对文件大小并未提供单位时,find 命令会默认使用块(block)为单位,一个块为512字节。
当只指定了文件大小,而为指定 +/- 则表示查找等于此大小的文件。
4. -user 根据文件的属主查找文件
find [目录] -user 用户名
5. -group 根据文件的属组查找文件
find [目录] -size 组名
6. -mtime 根据文件的修改时间查找文件
find [目录] -mtime n/-n/+n
-mtime n : 表示查找过去n天内内容被修改过的文件,但是并不包括当天。
-mtime -n : 表示查找过去n天之内内容被修改过的文件,但是并不包括第n天。
-mtime +n : 表示查找n天之前内容被修改过的文件,包括第n天。
-atime、-ctime,与 -mtime 的用法相似。
-atime 是根据文件的访问时间进行文件查找,也就是文件最后一被读取的时间。
-ctime 是根据文件的状态信息(权限、属组、位置等)变更时间进行文件查找,也是文件最后一次状态修改的时间,而不是文件内容。
7. -perm 根据文件权限查找文件
find [目录] -perm mode/-mode
-perm mode : 为精准匹配模式,会查找与权限完全匹配的文件。
-perm -mode : 为宽松匹配模式,会查找包含指定权限的文件。例如,find . -perm -007 会查找权限至少包含 007 的文件,包括权限为777、757等的文件。
宽松匹配模式一般很少使用,因为它会匹配很多不需要的文件,但当查找对于拥有附加权限的文件时却很有效。例如查找包含SGID权限的文件,find . -perm -g=s。
8. -empty 查找空白的文件,或空白的目录
find [目录] -empty
9. 选项的组合应用
所有的选项都可以与其他的选项进行组合使用,从而进一步细化的查找文件。
find 高级使用
1. 逻辑操作符
可以运用逻辑操作符(-and、-or、-not)来组合多个查找条件,来实现更加复杂的查找逻辑。
find . -type f -name "*.desktop" -or -name "*.txt"
这个命令会实现查找当前目录及其子目录下的所有以 .desktop 或 .txt 为结尾的文件
2. 执行操作
使用 -exec 选项可以对查找的文件执行指定的命令。
find . -type f -name "*.desktop" -or -name "*.txt" -exec echo {} > b.txt \;
这个命令可以将查找到符合条件的文件名全部写入到当前目录的 b.txt 文件中。
其中 -exec 表示额外的操作开始, {} 表示 find 所查找的内容,\; 表示额外的操作结束。