19-find 文件查找

临文乍了了,彻卷兀若无。这篇文章主要讲述19-find 文件查找相关的知识,希望能为你提供帮助。
[TOC]
【19-find 文件查找】

思维导图

基本语法:find[路径][选项][表达式][动作]
一、按文件类型查找

-type
f:可编辑文件
d:目录
l:软连接文件
b:块设备文件,如:磁盘,U盘 /dev/sda
c:字符设备文件,终端
s:socket 安全套结文件
p:管道文件
find [路径] [选项]
0 ? 07:32:17 root@yyds,10.0.0.100:< sub> # find /run -type s -ls
168880 srw-rw-rw-1 rootroot0 Apr 14 07:28 /run/vmware/guestServicePipe
163920 srw-rw-rw-1 rootroot0 Apr 14 07:28 /run/dbus/system_bus_socket
135680 srw-------1 rootroot0 Apr 14 07:28 /run/udev/control
# 查找找到文件的详细信息
0 ? 07:32:26 root@yyds,10.0.0.100:< /sub> # find /run -type s |xargs ls -l
srw-rw-rw-. 1 root root 0 Apr 14 07:28 /run/dbus/system_bus_socket
srwx------. 1 root root 0 Apr 14 07:28 /run/systemd/cgroups-agent
srw-rw-rw-. 1 root root 0 Apr 14 07:28 /run/systemd/journal/socket

#查找/etc/目录下所有目录,一共有多少?
0 ? 07:33:44 root@yyds,10.0.0.100:~ # find /etc/ -type d |wc -l
596

二、按文件大小查找
-size
-:小于
+:大于
Num:精准但又不太精准的匹配

#1.在/opt下创建1000个文件
0 ? 07:45:56 root@yyds,10.0.0.100:< sub> # touch /opt/file1..1000.txt
#2.使用find找到(/opt下小于1k的文件)并删除
127 ? 07:48:49 root@yyds,10.0.0.100:< /sub> # find /opt -size -1k|xargs rm -fr
#mv 原文件 目标路径
mv -t目标路径 原文件
0 ? 08:07:40 root@yyds,10.0.0.100:< sub> # touch /opt/file1..10.txt
0 ? 08:07:53 root@yyds,10.0.0.100:< /sub> # find /opt/ -size -1k|xargs mv -t /tmp/
0 ? 08:08:11 root@yyds,10.0.0.100:< sub> # ll /tmp/
total 0
-rw-r--r--. 1 root root 0 Apr 14 08:07 file10.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file1.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file2.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file3.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file4.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file5.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file6.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file7.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file8.txt
-rw-r--r--. 1 root root 0 Apr 14 08:07 file9.txt

xargs:
-i: 指定数据流的位置,将数据流放入中
0 ? 08:21:19 root@yyds,10.0.0.100:< /sub> # find /opt/ -size -1k|xargs -i cp/tmp/
0 ? 08:21:45 root@yyds,10.0.0.100:~ # ll /tmp
total 0
-rw-r--r--. 1 root root 0 Apr 14 08:21 file10.txt
-rw-r--r--. 1 root root 0 Apr 14 08:21 file1.txt
-rw-r--r--. 1 root root 0 Apr 14 08:21 file2.txt
..................................................

三、按文件名查找
-name :严格区分大小写
#查找根下文件名含有‘zls’的文件,不含大写“ZLS”
0 ? 08:30:20 root@yyds,10.0.0.100:< sub> # find / -name *zls*
/root/hdflshkld_zls
/root/djzlszz.txt
/root/zls
/var/spool/mail/zls
/home/zls
/skzlsdd.txt
/zoo/spzls
/zoo/zlssp
#查找文件名仅有‘zls’的文件
0 ? 08:29:55 root@yyds,10.0.0.100:< /sub> # find / -name zls
/root/zls
/var/spool/mail/zls
/home/zls
#查找以‘zls’开头的文件
0 ? 08:37:14 root@yyds,10.0.0.100:< sub> # find / -name zls*
/root/zls
/var/spool/mail/zls
/home/zls
/zoo/zlssp
#查找以‘zls’结尾的文件
0 ? 08:33:57 root@yyds,10.0.0.100:< /sub> # find / -name *zls
/root/hdflshkld_zls
/root/zls
/var/spool/mail/zls
/home/zls
/zoo/spzls
#-iname 不区分大小写
0 ? 08:46:40 root@yyds,10.0.0.100:~ # find / -iname zls*
/root/ZLS
/root/zls
/root/ZLS.txt
/var/spool/mail/zls
/home/zls
/zoo/zlssp

四、按文件时间查找
-atime 文件访问时间查找
-mtime 文件内容创建,修改时间查找
-ctime 文件属性,修改时间查找

Num:查找第N天的文件(不包括今天)
1 ? 21:01:53 root@yyds,10.0.0.100:< sub> # find / -mtime 7 -ls
find: ‘/proc/1404/task/1404/fd/6’: No such file or directory
find: ‘/proc/1404/task/1404/fdinfo/6’: No such file or directory
find: ‘/proc/1404/fd/5’: No such file or directory
find: ‘/proc/1404/fdinfo/5’: No such file or directory
65150 -rw-rw----1 jinjinmail0 Apr7 03:03 /var/spool/mail/jinjin
65220 -rw-rw----1 applemail0 Apr7 03:31 /var/spool/mail/apple
514605930 drwx------2 jinjinjinjin62 Apr7 03:03 /home/jinjin
65160 drwx------2 appleapple99 Apr7 09:12 /home/apple
65244 -rw-r--r--1 appleapple241 Apr7 03:58 /home/apple/.bashrc
65254 -rw-r--r--1 appleapple208 Apr7 03:59 /home/apple/.bash_profile
65214 -rw-------1 appleapple1839 Apr7 04:04 /home/apple/.viminfo
65204 -rw-------1 appleapple246 Apr7 09:12 /home/apple/.bash_history

+Num: 查找第N天之前的所有的文件(不包括今天)
-Num:查找从今天开始算,7天内的文件
# 一个文件有以下三种时间
access time:atime
modify time:mtime
change time:ctime
#查看这三种时间
0 ? 08:46:52 root@yyds,10.0.0.100:< /sub> # stat ZLS.txt
File: ‘ZLS.txt’
Size: 0Blocks: 0IO Block: 4096regular empty file
Device: 803h/2051dInode: 33838911Links: 1
Access: (0644/-rw-r--r--)Uid: (0/root)Gid: (0/root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-04-14 08:46:40.957222895 -0400
Modify: 2022-04-14 08:46:40.957222895 -0400
Change: 2022-04-14 08:46:40.957222895 -0400

#保留近七天的文件
for i in `seq -w 30`; do date -s 202204$i & & touch file-$i; done
0 ? 00:18:41 root@yyds,10.0.0.100:< sub> # find /opt ! -mtime -7|xargs rm -f
0 ?

    推荐阅读