find文件查找

Posted 洛客215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了find文件查找相关的知识,希望对你有一定的参考价值。

find基础语法

find路径] [选项] [表达式] [动作]

find选项

按文件类型查找

-type
f:可编辑的文件
d:目录
l:软链接文件
b:块设备文件 磁盘,U盘 /dev/sda
c:字符设备文件 终端
s:socket 安全套接字文件
p:管道文件

find [路径] [选项]
[root@localhost <sub>]# find /run -type s
# 查看找出文件的详细信息
[root@localhost </sub>]# find /run -type s|xargs ls -l

# 查询/etc/目录下所有目录,总共有多少个?
[root@localhost ~]# find /etc -type d|wc -l
602

按文件大小查找

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

# 1.在/opt下创建1000个文件
# 2.使用find找出(/opt下小于1k的文件)并删除
[root@localhost <sub>]# find /opt/ -size -1k|xargs rm -fr

# 1.在/opt下创建1000个文件
# 2.使用find找出(/opt下小于1k的文件)把它们全部移动到/tmp下

mv 源文件 目标路径
mv -t 目标路径 源文件

root@localhost </sub>]# find /opt/ -size -1k |xargs mv -t /tmp

xargs:
-i:指定数据流的位置,将数据流放入中
[root@localhost ~]# find /opt/ -size -1k |xargs -i mv /tmp

![1649929098813](C:\\Users\\Ti\\AppData\\Roaming\\Typora\\typora-user-images\\1649929098813.png)

按文件名查找

-name:严格区分大小写
[root@localhost <sub>]# find / -name zls
[root@localhost </sub>]# find / -name *zls
[root@localhost <sub>]# find / -name zls*
[root@localhost </sub>]# find / -name *zls*

-iname:不区分大小写
[root@localhost ~]# find / -iname zls

按文件时间查找

-atime:文件访问时间差找
-mtime:文件内容创建,修改时间差找
-ctime:文件属性,修改时间差找

Num:查找第N天的文件(不包括今天)
+Num:查找第N天之前的所有文件(不包括今天)
-NUm:查找从今天开始算,7天内的文件

# 一个文件有以下三种时间
access time:atime
modify time:mtime
change time:ctime

# 查看三种时间
[root@localhost ~]# stat abc_zls

for i in `seq -w 30`;do date -s 202204$i && touch file-$i;done

## 保留近七天的文件
[root@localhost opt]# find /opt ! -mtime -7|xargs rm -f
[root@localhost opt]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 24 00:00 file-24
-rw-r--r-- 1 root root 0 Apr 25 00:00 file-25
-rw-r--r-- 1 root root 0 Apr 26 00:00 file-26
-rw-r--r-- 1 root root 0 Apr 27 00:00 file-27
-rw-r--r-- 1 root root 0 Apr 28 00:00 file-28
-rw-r--r-- 1 root root 0 Apr 29 00:00 file-29
-rw-r--r-- 1 root root 0 Apr 30 00:00 file-30

按照文件用户和组查找

-user:查找文件的属主
-nouser:文件没有属主用户的

-group:查找文件的属组
-nogroup:文件没有属组的

多条件组合查找

[root@localhost opt]# find /opt/ -mtime -7
/opt/
/opt/file-24
/opt/file-25
/opt/file-26
/opt/file-27
/opt/file-28
/opt/file-29
/opt/file-30
/opt/dir-24
/opt/dir-25
/opt/dir-26
/opt/dir-27
/opt/dir-28
/opt/dir-29
/opt/dir-30
[root@localhost opt]# find /opt/ -type d -mtime -7
/opt/
/opt/dir-24
/opt/dir-25
/opt/dir-26
/opt/dir-27
/opt/dir-28
/opt/dir-29
/opt/dir-30

[root@localhost opt]# find /opt/ -name dir* -name *0 -type f -mtime -7 -size +1K

练习题

1.查找/tmp目录下,属主不是root,切文件名不是以f开头的文件
2.查找/var目录下属主为root,切属组为mail的所有文件
3.查找/var目录下不属于root、oldboy、zls组的所有文件
4.查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
5.查找/etc/下所有大于1M且类型为普通文件的所有文件
6.将/etc中的所有目录(仅目录)复制到/tmp下,目录结构不变
7.将/etc目录复制到 /var/tmp,/var/tmp/etc的所有目录权限为777,/var/tmp/etc/目录中所有文件权限为
666
9.创建touch file1..1010个文件,保留file9,其他一次全部删除
10.解释如下每条命令的含义
mkdir /root/dir1
touch /root/dir1/file1..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 file5 -o -name file9 ) -exec rm -vf \\;

以上是关于find文件查找的主要内容,如果未能解决你的问题,请参考以下文章

find 文件查找

如何使用find命令查找文件?

Linux find 查找 并删除文件 杀掉进程

文件查找find

Linux文件查找之Find详解

Linux下find命令和grep命令查找文件