Linux学习笔记--find命令(文件搜索命令)

时间:2022-12-25 23:18:56

find,查找的意思,作用是在系统当中搜索符合条件的文件。

find命令与locate命令的区别:

locate: 1) 非实时查找;
2) 依赖于索引,而索引构建非常占用资源,索引的创建是在系统空闲时系统自动进行,
可以用updatedb命令更新索引;
3) 查找速度快;
4) 非精准查找。

find : 1) 实时查找;
2) 精准查找 (系统上实时的有就是有没有就是没有);
3) 精确查找 (查找结果绝对符合查找条件才予显示);
4) 查找速度慢。

1. 命令格式:

find [搜索范围] [搜索条件] [处理动作]

2. 常用搜索条件选项:

-name "文件名称" : 按照文件名来搜索(可以使用通配符);
通配符有 :* (匹配任意多个字符)
? (匹配任意一个字符)
[] (匹配任意一个中括号内的字符)
[^] (匹配任意一个不在中括号内的字符)

-iname "文件名称" : 按照文件名来搜索,并忽略大小写(可以使用通配符);

-user 用户名 : 按照所有者搜索;

-nouser 用户名 : 搜索没有所有者的文件;

-type 文件类型 : 根据文件类型进行搜索;
文件类型有:b (块设备文件)
c (字符设备文件)
d (目录文件)
f (普通文件)
l (符号链接文件)
s (套接字文件)
p (命名管道文件)

-mtime 单位属性 : 按修改文件的时间进行搜索(单位为"天");
例如 : -mtime -10 (搜索10天内修改过的文件)
-mtime 10 (搜索10天前当天修改过的文件)
-mtime +10 (搜索10天前修改过的文件)

-atime 单位属性 : 按文件访问时间进行搜索(单位为"天");
-ctime 单位属性 : 按文件属性改变的时间进行搜索(单位为"天");

-mmin 单位属性 : 按修改文件的时间进行搜索(单位为"分");
-amin 单位属性 : 按文件访问时间进行搜索(单位为"分");
-cmin 单位属性 : 按文件属性改变的时间进行搜索(单位为"分");

-size 单位属性 : 按文件大小来进行搜索;
例如 : -size -10k (搜索文件大小小于10K的文件)
-size 10k (搜索文件大小为10K的文件)
-size +10k (搜索文件大小大于10K的文件)
-size -25M (搜索文件大小小于25M的文件)
(注意:"k"为小写,"M"为大写)

-a : 组合条件"与"(and)
-o : 组合条件"或"(or)
-not|! : 组合条件"取反"

3. 常用处理动作:

"-print"           默认处理动作;
"-ls" 作用相当于"ls -l"
"-exec 命令 {} \;" 对查找到的文件执行指定的命令,
命令后面的{}表示,查找到什么就引用什么;
"-ok 命令 {} \;" 这是个交互式的"-exec",每操作一次就需要你确认下。

4. 常用范例:

1) 查找/root/py目录下,名为"test1.py"的文件。

Linux学习笔记--find命令(文件搜索命令)

2) 查找/root/py目录下,名为"test1.py"的文件(忽略大小写区别)。

Linux学习笔记--find命令(文件搜索命令)

3) 查找/root/py目录下,以".py"结尾的文件。

Linux学习笔记--find命令(文件搜索命令)

4) 查找/root/py目录下,名为"test1.py""test2.py"的文件。

Linux学习笔记--find命令(文件搜索命令)

5) 查找/root/py目录下,以".py"结尾并且所有者为"root"的文件。

Linux学习笔记--find命令(文件搜索命令)

6) 查找当前日志目录中,"2天以内"修改过的日志文件。

Linux学习笔记--find命令(文件搜索命令)

7) 查找当前日志目录中,"7天以前"修改过的日志文件并进行删除。

Linux学习笔记--find命令(文件搜索命令)

8) 查找当前日志目录中,文件"大于25K"的文件,并进行人性化显示。

Linux学习笔记--find命令(文件搜索命令)

9) 查找当前日志目录中,文件"大于25K并小于50K"的文件,并进行人性化显示。

Linux学习笔记--find命令(文件搜索命令)

10) 查找resin_log目录下的各日志目录中,文件修改日期超过19天的日志文件,同时忽略pay目录下的文件(如果后边跟-exec rm -rf {} \;的时候,就能保证pay里边的文件不会被删除了)。

Linux学习笔记--find命令(文件搜索命令)