Linux命令大全-find命令

一、简介

find命令是用于在指定的目录下查找指定的文件或目录,它可以根据自己的查找需求,采用不同的选项进行过滤和限制查找的结果,且能支持正则表达式方式查找,还能结合管道符实现更加复杂的查找功能。

二、语法

语法: find[路径] [匹配条件] [动作]

参数说明:

**路径:**是指要查找的目录路径,它可以是一个目录,也可以是一个文件名,甚至可以是多个路径(中间空格分隔),如果未指定路径,默认为是当前目录。

**条件(expression):**是可选参数,主要用于指定查找条件,可以是文件名、文件类型或文件大小等。

匹配条件中可以用的选项比较多,下面列出最常用的几个参数:

-name:按文件名查找,支持使用通配符或正则表达式,如:*和?。

-type:按类型查找,f(普通文件)、d(目录)、l(符号链接)等。

-size [+/-]size[cwbkMG]:按文件大小查找,支持+或-,表示大于或小于指定的大小,单位可以是c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或G(GB)。

-user: 按文件所属者进行查找。

-group:按文件所属组进行查找。

-mtime:按文件修改时间查找,支持使用+或-,表示在指定的天数前或。

**动作:**可选操作,是用于对匹配到的文件执行什么样的操作,如:删除、复制或改名等。

find命令中用到的时间参数如下:

-amin n:查找在n分钟内被访问过的文件。

-atime n:查找在n*24小时内被访问过的文件。

-cmin n:查找在n分钟内状态发生变化的文件(如:权限)。

-ctime n:查找在n*24小时内状态发生变化的文件(如:权限)。

-min n:查找在n分钟内被修改过的文件。

-mtime n:查找在n*24小时内被修改过的文件。

注:在以上时间这些参数中,n可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

正数:表示时间之前

负数:表示时间之内

例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周内以前修改过的文件。

+n:查找比n天前更早的文件或目录。

-n:查找在n天内更改过属性的文件或目录。

n:查找在n天前(指定某一天)更改过属性的文件或目录。

三、 实战

1 、查找某一个目录的test.txt文件

bash 复制代码
[root@Milvus abc]# find . -name test.txt
./test.txt

2 、查找当前目录及其子目录下所有文件以".py"结尾的文件

bash 复制代码
[root@Milvus iwen_search]# find . -name "*.py"
./server/api.py
./config.py
./data_precess.py
./db.py
./model.py
./_test_lc_sml.py

3 、查找当前目录及子目录下所有的文件

bash 复制代码
[root@Milvus iwen_search]# find . -type f
./.idea/workspace.xml
./.idea/.gitignore
./.idea/iwen_search.iml
./.idea/modules.xml
./.idea/misc.xm
./.idea/inspectionProfiles/profiles_settings.xml
./server/api.py
./server/__pycache__/api.cpython-310.pyc
./server/start.sh
=================此处省略部分内容=================

4 、查找当前目录大于1M的文件

bash 复制代码
[root@Milvus jina-embeddings-v2-base-zh]# find  . -size +1M
./model.safetensors
./onnx/model.onnx
./onnx/model_fp16.onnx
./onnx/model_quantized.onnx
./tokenizer.json
./pytorch_model.bin

5 、查找log目录下7天前修改过的文件

bash 复制代码
[root@Milvus var]# find ./log -mtime +7
./log/tallylog
./log/grubby_prune_debug
./log/samba
./log/samba/old
./log/ppp
./log/audit
./log/speech-dispatcher
=================此处省略部分内容=================

6 、查找过去 7 天内被访问的文件

bash 复制代码
[root@Milvus var]# find ./log -atime -7
./log
./log/lastlog
./log/wtmp
./log/samba
./log/samba/old
./log/ppp
./log/audit

7 、查找最近 20 天内状态发生改变的文件和目录

bash 复制代码
[root@Milvus log]# find . -ctime -20
.
./lastlog
./wtmp
./audit/audit.log
./cups
./cups/access_log-20251204
./cups/access_log
./gdm/:0.log
./spooler-20251204

8 、查找20天前及更早更新过的文件

bash 复制代码
[root@Milvus log]# find . -ctime  +20
./tallylog
./grubby_prune_debug
./samba
./samba/old
./ppp
./audit

9 、查找某一个用户所属的文件

bash 复制代码
[root@Milvus iwen]# find ./abc -user iwen
./abc
./abc/test.txt

10 、查找某一个权限的文件

bash 复制代码
[root@Milvus iwen]# find . -type f -perm 755
./soft/anaconda/Anaconda3-2024.06-1-Linux-x86_64.sh
./anaconda3/pkgs/ca-certificates-2024.3.11-h06a4308_0/info/recipe/bld.bat
./anaconda3/pkgs/ca-certificates-2024.3.11-h06a4308_0/info/recipe/build.sh

11 、查找指定文件并进行删除操作

bash 复制代码
[root@Milvus iwen]# find /path/to/search -name "filename" -exec rm {} \;

这个例子中,filename代表要查找的文件,-exec 选项允许你执行一个命令,{} 将会被匹配到的文件名替代,\; 表示命令结束。如果想移动文件或是复制文件,把rm换成mv或cp即可,其它操作依次类推。

find命令还有更多的参数可以使用,具体参数大家可以使用find --help或man find进行查看学习,这里就不一一进行演示了。

相关推荐
深紫色的三北六号7 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash11 小时前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI21 小时前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
Sinclair2 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
Rockbean3 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪3 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩3 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端