Linux Find 备忘清单

news2024/11/17 10:59:18

在这里插入图片描述

文章目录

  • 引言
  • 一、入门
    • 1.1 简介
    • 1.2 命令用法
  • 二、基本使用
    • 2.1 根据文件大小查找
    • 2.2 根据文件类型查找
    • 2.3 根据文件名查找
    • 2.4 指定搜索目录层级/深度
    • 2.5 根据权限查找
    • 2.6 根据属主/属组查找
    • 2.7 多个文件名
    • 2.8 多个目录
    • 2.9 根据时间戳查找
  • 三、进阶使用
    • 3.1 查找和删除
    • 3.2 查找和移动
    • 3.3 查找和复制
    • 3.4 查找和排序
    • 3.5 查找和 chmod
    • 3.6 查找并排除目录
  • 四、小结

引言

这是 Linux find 命令备忘清单的快速参考列表,包含常用选项和示例。

一、入门

1.1 简介

  在 Linux 系统中,搜索工作一般都是通过find命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。find在工作时会遍历指定的目录,通过匹配指定的条件搜寻我们需要的文件或者目录。因此,find命令具有以下特点:

  • 查找速度略慢
  • 精确查找
  • 实时查找
  • 可能只搜索用户具备读取和执行权限的目录

1.2 命令用法

find 命令用于按照指定条件来查找文件所对应的位置,语法格式如下所示:

find [path...] [options] [expression]
参数描述
path…需要查找文件所指定的路径。如果不指定,则默认为当前目录及其子目录
options
expression匹配条件/表达式。如果未设置匹配条件,则默认查找指定目录及子目录下所有文件

find命令的参数以及作用如下表所示。

参数示例描述
-typefind . -type d仅查找目录
-namefind . -type f -name “*.txt”按名称查找文件
-inamefind . -type f -iname “hello”按名称查找文件(不区分大小写)
-sizefind . -size +1G查找大于 1G 的文件
-userfind . -type d -user jack查找杰克的文件
-regexfind /var -regex ‘.*/tmp/.[0-9].file’将正则表达式与查找一起使用
-maxdepthfind . -maxdepth 1 -name “a.txt”在当前目录和子目录中
-mindepthfind / -mindepth 3 -maxdepth 5 -name pass在子目录级别 2 和 4 之间
-atimefind / -atime 50访问时间(上次文件打开)
-mtimefind / -mtime 50修改时间(上次文件内容被修改)

二、基本使用

2.1 根据文件大小查找

命令用法为

find 搜索路径 [选项] 搜索内容

  其中,选项是 -size [+|-]N,这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。N为文件大小,单位为c/k/M/G,如下所示:

命令说明
-size b默认单位,如果单位为b或不写单位,则按照512 Byte搜索
-size c搜索单位是c,按照字节搜索。
-size w搜索单位是w,按照双字节(中文)搜索。
-size k按照KB单位搜索,必须是小写的k。
-size M按照MB单位搜索,必须是大写的M
-size G按照GB单位搜索,必须是大写的G

示例如下所示:

# 在当前目录下搜索文件大小为28k的文件
find . -size 28k

# 查找所有大于 10MB 的文件
find / -size +10M

# 查找所有小于 10MB 的文件
find / -size -10M

# 查找所有正好为 10M 的文件
find / -size 10M

# 查找 100MB 和 1GB 之间的大小
find / -size +100M -size -1G

2.2 根据文件类型查找

  Linux系统中的文件大致分为以下种:普通文件、目录文件、二进制程序文件、符号链接文件、套接字文件、块设备文件、字符设备文件。我们可以指定搜索文件的文件类型以达到查找文件的目的。命令用法为

find 搜索路径 [选项] 搜索内容

所搜文件的具体类型有TYPE的值确定。TYPE的值及具体含义如下:

命令说明
-type f查找普通文件
-type d查找目录文件
-type l查找符号链接文件
-type s查找套接字文件
-type b查找块设备文件
-type c查找字符设备文件
-type p查找管道文件

示例如下所示:

# 使用名称查找目录
find / -type d -name tecmint

# 使用名称查找php文件
find . -type f -name tecmint.php

# 查找目录下的所有php文件
find . -type f -name "*.php"

2.3 根据文件名查找

在下面的例子中,我们使用了-name选项查找f开头的文件,现在我们开始讲解如何根据文件名查找指定文件。

find 搜索路径 [选项] 搜索内容

其中,选项参数如下表所示:

参数说明
-name按照文件名搜索
-iname按照文件名搜索,不区分文件名大小写

示例如下所示:

# 在当前目录中使用名称查找文件
find . -name tecmint.txt

# 查找主目录下的文件
find /home -name tecmint.txt

# 使用名称查找文件并忽略大小写
find /home -iname tecmint.txt

2.4 指定搜索目录层级/深度

  指定搜索目录的层级需要用到选项-maxdepth和-mindepth,分别指定搜索目录的最大深度和最小深度。两个选项可以配合使用,指定搜索目录的深度范围。如果-maxdepth/-mindepth二者的参数相同,则find命令会搜索某个特定深度的文件。

参数说明
-maxdepth level指定最大搜索目录深度level,指定的目录为第1级
-mindepth level指定最小搜索目录深度level。配合-maxdepth可搜索指定深度的文件。

示例如下所示:

# 该命令中”/”为第一级目录,查找文件的最大目录深度为2。
find / -maxdepth 2 -name "*.conf"

2.5 根据权限查找

我们可以根据文件三类访问对象的三种三种权限查找对应文件,命令用法如下:

find 搜索路径 [选项] 搜索内容

其中,选项参数如下表所示:

参数描述
-perm查找文件权限刚好等于“权限模式”的文件
-perm -权限模式查找文件权限全部包含“权限模式”的文件
-perm +权限模式查找文件权限包含“权限模式”的任意一个权限的文件

示例如下所示:

# 查找权限为 777 的文件
find . -type f -perm 0777 -print

# 查找未经许可的文件 777
find / -type f ! -perm 777

# 查找 SUID 集文件
find / -perm /u=s

# 查找 SGID 集文件
find / -perm /g=s

# 查找只读文件
$ find / -perm /u=r

# 查找可执行文件
find / -perm /a=x

2.6 根据属主/属组查找

根据文件的属主以及属组信息,我们可以查找符合指定属主、属组的文件。相关选项用法如下:

find 搜索路径 [选项] 搜索内容

其中,选项参数如下表所示:

命令说明
-user username查找属主为指定用户(UID)的文件
-group groupname查找属组为指定组(GID)的文件
-uid UseerID查找属主为指定的UID号的文件
-gid GroupID查找属组为指定的GID号的文件
-nouser查找没有属主的文件
-nogroup查找没有属组的文件

示例如下所示:

# 根据用户查找单个文件
find / -user root -name tecmint.txt

# 根据用户查找所有文件
find /home -user tecmint

# 根据组查找所有文件
find /home -group developer

# 查找用户的特定文件
find /home -user tecmint -iname "*.txt"

2.7 多个文件名

# 查找带有 .sh 或 .txt 扩展名的文件
find . -type f \( -name "*.sh" -or -name "*.txt" \)

2.8 多个目录

# 查找具有多个目录的文件
find /opt /usr /var -name foo.scala -type f

2.9 根据时间戳查找

  文件的时间戳分为访问时间(access time)、修改时间(modify time)、创建时间(create time),分别简写为atime/mtime/ctime。我们可以根据这三个时间戳查找对应文件。命令用法如下:

find 搜索路径 [选项] 搜索内容

其中,选项参数如下表所示:

参数说明
-atime [+|-]时间按照文件访问时间搜索
-mtime [+|-]时间按照文件数据修改时间搜索
-ctime [+|-]时间按照文件状态修改时间搜索

提示:也有-amin、-mmin等时间选项,时间单位为分钟。

命令说明
-mtime +024 小时前修改
-mtime 0从现在到 1 天前修改
-mtime -1不到 1 天前修改(与 -mtime 0 相同)
-mtime 124 至 48 小时前修改
-mtime +1超过 48 小时前修改
-mtime +1w上次修改时间超过 1 周前
-atime 0从现在到 24 小时前最后一次访问
-atime +0访问时间超过 24 小时
-atime 1在 24 至 48 小时前访问
-atime +1访问时间超过 48 小时
-atime -1不到 24 小时前访问过(与 -atime 0 相同)

示例如下所示:

# 查找最近 50 天修改的文件
find / -mtime 50

# 查找最近 50 天访问的文件
find / -atime 50

# 查找最近 50-100 天修改的文件
find / -mtime +50 –mtime -100

# 查找最近 1 小时内更改的文件
find / -cmin -60

# 查找最近 1 小时内修改过的文件
find / -mmin -60

# 查找最近 1 小时内访问过的文件
find / -amin -60

三、进阶使用

有时候我们查找文件可能还会对这些文件进行后续的操作,例如删除,修改权限等。可以使用以下命令:

命令说明
-print默认的处理动作,显示至屏幕
-ls类似于对查找到的文件执行“ls -l”命令
-delete删除查找到的文件 慎用!
-fls file查找到的所有文件的长格式信息保存至指定文件中,也可用重定向的方式
-ok COMMAND {} \;对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \;对查找到的每个文件执行由COMMAND指定的命令,没有-ok中的交互式确认。
其中{}用于引用查找到的文件名称自身,;是配合-ok和-exec选项的

3.1 查找和删除

# 查找并删除多个文件
find . -type f -name "*.mp3" -exec rm -f {} \;

# 查找和删除单个文件
find . -type f -name "tecmint.txt" -exec rm -f {} \;

# 查找和删除 100mb 文件
find / -type f -size +100m -exec rm -f {} \;

# 查找特定文件并删除
find / -type f -name *.mp3 -size +10m -exec rm {} \;

3.2 查找和移动

# 查找并将其移动到特定目录
find . -name '*.mp3' -exec mv {} /tmp/music \;

3.3 查找和复制

# 查找并将其复制到特定目录
find . -name '*2020*.xml' -exec cp -r "{}" /tmp/backup \;

3.4 查找和排序

find . -printf "%T+\t%p\n" | sort
find . -printf "%T+\t%p\n" | sort -r

3.5 查找和 chmod

# 查找文件并将权限设置为 644
find / -type f -perm 777 -print -exec chmod 644 {} \;

# 查找目录并将权限设置为 755。
find / -type d -perm 777 -print -exec chmod 755 {} \;

3.6 查找并排除目录

# 查找当前目录及子目录中的所有js文件,但是排除掉node_modules目录中的
find . -type f -name "*.js" -not -path "./node_modules/*"

四、小结

  find命令通常进行的是从根目录开始的全盘搜索,搜索位置越大,消耗系统资源越多。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,会相对消耗较多的系统资源。在生产服务器上搜索的时候,尽量不在根目录下搜索,把搜索的范围尽量控制在最小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1082607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tomcat服务tomcat多实例部署

tomcat服务&&tomcat多实例部署 文章目录 tomcat服务&&tomcat多实例部署1.简介2.优缺点优点:缺点: 3.工作原理4.工作流程5.tomcat服务部署5.1.java环境安装5.2.拉取tomcat软件包5.3.解压部署5.4.启动tomcat服务5.5.访问tomcat的web页面5.…

java 常量、变量、数据类型

常量 * 指在程序执行期间其值不能发生变化的数据。例如数学中的π 3.1415……又如:整数123,小 数1.23,字符’A’,布尔常量 true、false等,程序开发中,常量名一般规则全部大写,声明常量时必 须赋…

排序算法-希尔排序法(ShellSort)

排序算法-希尔排序法(ShellSort) 1、说明 我们知道当原始记录的键值大部分已排好序的情况下插入排序法非常有效,因为它不需要执行太多的数据搬移操作。希尔排序法是D.L.Shell在1959年7月发明的一种排序法,可以减少插入排序法中数…

tomcat 问题

一、start up.bat 闪退 在命令窗口run 看看是缺少了哪个环境变量 二、控制台输出乱码 logging.properties 底部添加 java.util.logging.ConsoleHandler.encoding GBK 三、缓存不足 context.xml配置 <Resources cachingAllowed"false" cacheMaxSize"100…

从字节码文件理解 ++i 和 i++ 的区别_i++ 与 ++i 底层

jvm内存模型 jvm 内存模型&#xff1a;Java 代码是运行在 Java 虚拟机之上的&#xff0c;由 Java 虚拟机通过解释执行 (解释器)或编译执行 (即时编译器) 来完成&#xff0c;故 Java 内存模型&#xff0c;也就是指 Java 虚拟机的运行时内存模型。 运行时内存模型&#xff0c;分…

【2023集创赛】安谋科技杯二等奖作品: 智能体感游戏机

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;安谋科技杯二等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子礼…

KUKA机器人如何强制输出或取消数字IO信号?

KUKA机器人如何强制输出或取消数字IO信号? 具体的操作方法和步骤可参考以下内容: 如下图所示,点击菜单—显示—输入/输出端,如下图所示,选择想要查看的信号,这里以数字输出端为例进行说明, 如下图所示,此时可以看到输出端信号的编号、名称和当前值,可以通过下拉滚动条…

UE4和C++ 开发-编程基础记录(UE4+代码基础知识)

1、UE4基础元素 ①Actor 我们又见面了Actor&#xff0c;Actor是在一个关卡中持续存在的&#xff0c;通常他包含几个Actor组件。支持网络复制和多人游戏。   Actor不包含位置&#xff0c;方向。这些东西在Root Component中存储。对于UE3 中的Pawn也由PlayerCharacter继承了…

信钰证券:股票交易费用计算方法?

股票生意是股市参加者之间进行的买入和卖出股票的进程。其中&#xff0c;股票生意费用是参加股市生意的重要组成部分。本文将从多个视点分析股票生意费用计算方法。 首先&#xff0c;股票生意费用一般包含三部分。分别是佣钱、印花税和过户费。佣钱是证券公司为代理股票生意而收…

UE4和C++ 开发-常用的宏(二)UPROPERTY(类似于Unity中C#的特性[SerializeField])

UPROPERTY的作用类似于Unity中C#的特性[SerializeField]或者Godot中的export。目的就是通过反射把属性暴露在蓝图或实例的细节面板。 属性说明符&#xff08;Property Specifiers&#xff09;

IDEA设置自动导入包

IDEA设置自动导入包 首先进入设置选项 之后勾选以下两项&#xff1a; 第一项&#xff1a;IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包&#xff0c;比如自动去掉一些没有用到的包。 第二项&#xff1a; IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入…

mac,linux环境的基础工具安装【jdk,tomcat】

安装 一 linux环境一&#xff09;、JDK安装卸载&#xff1a; 二&#xff09;、 tomcat 安装1、[下载](https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.63/bin/apache-tomcat-8.5.63.tar.gz)后&#xff0c;在目录 /usr/local/tomcat下&#xff0c;解压缩2、配置tomca…

基于SpringBoot的学院班级回忆录

目录 前言 一、技术栈 二、系统功能介绍 管理员模块的实现 用户信息管理 班委信息管理 班级信息管理 班级相册管理 用户和班委模块的实现 班委注册 班级信息管理 加入班级 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越…

spring boot自定义配置时在yml文件输入有提示

自定义一个配置类&#xff0c;然后在yml文件具体配置值时&#xff0c;一般不会有提示&#xff0c;这个解决这个问题 依赖 <!--自定义配置类&#xff0c;在yml文件写的时候会有提示--><dependency><groupId>org.springframework.boot</groupId><arti…

opencv图像卷积操作原理,opencv中常用的图像滤波函数

文章目录 opencv图像卷积操作原理&#xff0c;opencv中常用的图像滤波函数一、图像卷积操作原理&#xff1a;1、卷积操作原理图&#xff1a; 二、opencv常用的图像滤波函数&#xff1a;这些函数的主要作用是对图像进行平滑处理或去除噪声(核心目的是减少图像中的噪声&#xff0…

【C++入门系列】——命名空间和输入输出

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c入门第一个程序和基本知识讲解 &#x1f604;每日一言&#xff1a;忙&#xff0c;不会死&#xff0c;人只有越忙越活&#xff0c;流水不腐&#xff0c;户枢不蠹。 目录 ​作者主页 前言 谈谈我个人…

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

概述 12v / 24v智能模拟高侧MOSFET栅极驱动器。 特性 PRO-SIL ISO 26262-准备根据ISO 26262:2018条款8-13支持硬件元件评估的集成商。一个通道器件具有两个高侧栅极驱动器输出。3 Ω下拉,50 Ω上拉,用于快速开关开/关。支持背靠背MOSFET拓扑(共漏极和共源)。两个双向高侧模拟…

C/C++ 线程超详细讲解(系统性学习day10)

目录 前言 一、线程基础 1.概念 2.一个进程中多个线程特征 2.1 线程共有资源 2.2 线程私有资源 3.线程相关的api函数 3.1 创建线程 创建线程实例代码如下&#xff1a; 需要特别注意的是&#xff1a; -lpthread和-pthread的区别 3.2 给线程函数传参 传参实例代码如…

生命在于学习——Stable Diffution(Mac端)

一、前言 最近一段时间研究了一下Stable Diffution&#xff0c;Windows和MAC端都搭建成功了&#xff0c;也尝试了各种功能&#xff0c;后续会学习新的使用姿势&#xff0c;写一篇文章记录一下。 二、介绍 1、Stable Diffution是什么 Stable Diffusion&#xff0c;是一种AI绘…

如何处理前端安全性问题(XSS、CSRF等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…