1.find查找概述
为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。
find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命令是Linux下必须掌握的。
find 命令的基本语法如下\
命令 | 路径 | 选项 | 表达式 | 动作 |
find |
[path…] |
[options] |
[expression] |
[action] |
查找 |
地区 |
妹纸 |
18-25岁 |
约? |
2.find查找示例
以下列出所有find常用的选项\
1.find名称查找
1
2
3
4
5
6
7
8
9
10
11
|
touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1}
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
2.find大小查找
1
2
3
4
5
6
7
8
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
3.find类型查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
4.find时间查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete
|
5.find用户查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
6.find权限查找
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
2.find动作处理,比如查找到一个文件后,需要对文件进行如何处理, find的默认动作是 -print\
动作 | 含义 |
-print |
打印查找到的内容(默认) |
-ls |
以长格式显示的方式打印查找到的内容 |
-delete |
删除查找到的文件(仅能删除空目录) |
-ok |
后面跟自定义 shell 命令(会提示是否操作) |
-exec |
后面跟自定义 shell 命令(标准写法 -exec ;) |
1.find查找后的动作命令示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
2.使用find命令结合xargs
1
2
3
4
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
3.find逻辑运算符
1
2
3
4
5
6
7
8
9
|
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
[root@lqz ~]
|
4.find相关练习题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
1.查找/tmp目录下,属主不是root,且文件名不以f开头的文件
2.查找/var目录下属主为root,且属组为mail的所有文件
3.查找/var目录下不属于root、lp、gdm的所有文件
4.查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
5.查找/etc目录下大于1M且类型为普通文件的所有文件
6.将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变
7.将/etc目录复制到/var/tmp/,/var/tmp/etc的所有目录权限777/var/tmp/etc目录中所有文件权限666
8.保留/var/log/下最近7天的日志文件,其他全部删除
9.创建touch file{1..10}10个文件, 保留file9,其他一次全部删除
10.解释如下每条命令含义
mkdir /root/dir1
touch /root/dir1/file{1..10}
find /root/dir1 -type f -name "file5"
find /root/dir1 ! -name "file5"
find /root/dir1 -name "file5" -o -name "file9"
find /root/dir1 -name "file5" -o -name "file9" -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;
find /root/dir1 ! \( -name "file4" -o -name "file8" \) -exec rm -vf {} \;
|
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步