19-find 文件查找

Posted 人生玩家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
16888 0 srw-rw-rw- 1 root root 0 Apr 14 07:28 /run/vmware/guestServicePipe
16392 0 srw-rw-rw- 1 root root 0 Apr 14 07:28 /run/dbus/system_bus_socket
13568 0 srw------- 1 root root 0 Apr 14 07:28 /run/udev/control
# 查找找到文件的详细信息
007: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/目录下所有目录,一共有多少?
007:33:44 root@yyds,10.0.0.100:~ # find /etc/ -type d |wc -l
596

二、按文件大小查找

-size
-:小于
+:大于
Num:精准但又不太精准的匹配

#1.在/opt下创建1000个文件
007:45:56 root@yyds,10.0.0.100:<sub> # touch /opt/file1..1000.txt
#2.使用find找到(/opt下小于1k的文件)并删除
12707:48:49 root@yyds,10.0.0.100:</sub> # find /opt -size -1k|xargs rm -fr
#mv 原文件 目标路径
mv -t 目标路径 原文件
008:07:40 root@yyds,10.0.0.100:<sub> # touch /opt/file1..10.txt
008:07:53 root@yyds,10.0.0.100:</sub> # find /opt/ -size -1k|xargs mv -t /tmp/
008: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: 指定数据流的位置,将数据流放入中
008:21:19 root@yyds,10.0.0.100:</sub> # find /opt/ -size -1k|xargs -i cp /tmp/
008: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”
008: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’的文件
008:29:55 root@yyds,10.0.0.100:</sub> # find / -name zls
/root/zls
/var/spool/mail/zls
/home/zls
#查找以‘zls’开头的文件
008:37:14 root@yyds,10.0.0.100:<sub> # find / -name zls*
/root/zls
/var/spool/mail/zls
/home/zls
/zoo/zlssp
#查找以‘zls’结尾的文件
008: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 不区分大小写
008: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天的文件(不包括今天)
121: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
6515 0 -rw-rw---- 1 jinjin mail 0 Apr 7 03:03 /var/spool/mail/jinjin
6522 0 -rw-rw---- 1 apple mail 0 Apr 7 03:31 /var/spool/mail/apple
51460593 0 drwx------ 2 jinjin jinjin 62 Apr 7 03:03 /home/jinjin
6516 0 drwx------ 2 apple apple 99 Apr 7 09:12 /home/apple
6524 4 -rw-r--r-- 1 apple apple 241 Apr 7 03:58 /home/apple/.bashrc
6525 4 -rw-r--r-- 1 apple apple 208 Apr 7 03:59 /home/apple/.bash_profile
6521 4 -rw------- 1 apple apple 1839 Apr 7 04:04 /home/apple/.viminfo
6520 4 -rw------- 1 apple apple 246 Apr 7 09:12 /home/apple/.bash_history

+Num: 查找第N天之前的所有的文件(不包括今天)
-Num:查找从今天开始算,7天内的文件
# 一个文件有以下三种时间
access time:atime
modify time:mtime
change time:ctime
#查看这三种时间
008:46:52 root@yyds,10.0.0.100:</sub> # stat ZLS.txt
File: ‘ZLS.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 33838911 Links: 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
000:18:41 root@yyds,10.0.0.100:<sub> # find /opt ! -mtime -7|xargs rm -f
0每天一个linux命令(19):find 命令概览

每天一个 Linux 命令(19):find 命令概览

每天一个linux命令(19):find 命令概览

windows for循环 批量查找文件并用winrar压缩并删除原文件

linux常用命令(19)find xargs

linux命令:批量将查找到的文件移动或者复制到其他目录并尽可能保持原文件的目录结构