1. find查找概述
为什么要有文件查找 , 因为很多时候我们可能会忘了某个文件所在的位置 , 此时就需要通过find来查找 .
find命令可以根据不同的条件来进行查找文件 , 例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式 .
同时find命令是Linux下必须掌握的 .
find 命令的基本语法如下 :
命令 路径 选项 表达式 动作 find [path…] [options] [expression] [action] 查找 地区 妹纸 18-25岁 约?
2. 示例
以下列出所有find常用的选项
2.1 指定文件名
选项 :
-name 指定文件的名称
-i 忽略大小写
[ root@kid ~]
[ root@kid ~]
/etc/sysconfig/network-scripts/ifcfg-eth111
[ root@kid ~]
/etc/sysconfig/network-scripts/ifcfg-eth111
/etc/sysconfig/network-scripts/IFCFG-ETH111
[ root@kid ~]
/etc/sysconfig/network-scripts/ifcfg-eth111
[ root@kid ~]
/etc/sysconfig/network-scripts/ifcfg-eth111
/etc/sysconfig/network-scripts/IFCFG-ETH111
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
2.2 指定文件大小
选项 :
-size 指定文件的大小
+ : 大于
- : 小于
无符号 : 等于
c : 字节
k : KB
M : MB
G : GB
[ root@kid ~]
/etc/udev/hwdb.bin
[ root@kid ~]
[ root@kid ~]
2.3 指定文件类型
文件类型 :
b block special 块设备
c character special 字符设备
d directory 目录
f ASCII text 文件
s sticky directory 套接字
l symbolic link . . . 链接
p fifo ( named pipe ) 管道文件
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
2.4 指定时间查找
选项 :
-mtime n 指定查询数据
+ : n天前
- : n天后
无符号 : 第n天
[ root@kid ~]
[ root@kid ~]
./file-01
.. .
./file-27 ( 今天是9-4号)
[ root@kid ~]
./file-29
./file-30
./file-31
[ root@kid ~]
./file-28
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete
2.5 指定用户查找
选项 :
-user 指定属主
-group 指定属组
-nouser 没有属主
-nogroup 没有属组
[ root@kid ~]
/home/qq/a.txt
.. .
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
2.6 指定权限查找
选项 :
-perm 权限位 指定权限查询
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
3. find动作处理
3.1 动作及含义
比如查找到一个文件后 , 需要对文件进行如何处理 , find的默认动作是 -print 输出 .
动作 含义 -print 打印查找到的内容(默认) -ls 以长格式显示的方式打印查找到的内容 -delete 删除查找到的文件(仅能删除空目录) -ok 后面跟自定义 shell 命令(会提示是否操作) -exec 后面跟自定义 shell 命令(标准写法 -exec 😉
3.2 示例
[ root@kid ~]
/etc/sysconfig/network-scripts/ifcfg-ens32
[ root@kid ~]
/etc/sysconfig/network-scripts/ifcfg-ens32
[ root@kid ~]
8414899 4 -rw-r--r-- 1 root root 365 Sep 3 20 :31 /etc/sysconfig/network-scripts/ifcfg-ens32
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
ls: cannot access dir1: No such file or directory
[ root@kid ~]
< cp .. . /etc/sysconfig/network-scripts/ifcfg-ens32 > ? ok ( 需要输入ok)
.. .
[ root@kid ~]
[ root@kid ~]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
4. 配合xargs使用
xargs将前者命令查找到的文件作为一个整体传递后者命令的输入 .
[ root@kid ~]
[ root@kid ~]
file1.txt file2.txt
[ root@kid ~]
[ root@kid ~]
‘./file2.txt’ -> ‘/var/tmp/file2.txt’
5. 逻辑运行符
[ root@kid ~]
[ root@kid ~]
用户不存在会先提示用户不存在
find : ‘hdfs’ is not the name of a known user
[ root@kid ~]
[ root@kid ~]
使用 ( ) 需要使用 \ 转义 , 否则提示
-bash : syntax error near unexpected token
6. 相关练习题
1. 查找 / tmp目录下 , 属主不是root , 且文件名不以f开头的文件
2. 查找 / var目录下属主为root , 且属组为mail的所有文件
3. 查找 / var目录下不属于root、lp、gdm的所有文件
4. 查找 / var目录下最近一周内其内容修改过 , 同时属主不为root , 也不是postfix的文件
5. 查找 / etc目录下大于 1 M且类型为普通文件的所有文件
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 { } \ ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
———————————————— 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. 文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低. ————————————————