linux文件查找--locate和find命令详解

news2024/12/23 10:31:45

在文件系统上查找符合条件的文件

文件查找:
  1.非实时查找(数据库查找):locate
  2.实时查找: find

应用:生产环境中查找到系统中占用磁盘空间较大且时间比较久的大日志文件,对这个较大的日志文件做处理(删除移走等),防止它占用更多的磁盘空间。

文章目录

  • locate概述
    • 安装mlocate
    • locate格式
    • locate特点
  • find概述
    • find特点
    • 指定搜索目录层级
    • 对每个目录先处理目录内的文件,再处理目录本身
    • 文件名和inode查找
    • 属主、属组查找
    • 文件类型查找
    • 空文件或目录查找
    • 组合条件
    • 排除目录
    • 文件大小查找
      • find -size [+|-]
    • 时间戳查找
      • find ./ -ctime -5
    • 处理动作
      • -print
      • -delete
      • -fls file
      • -ok COMMAND {} \;
      • -exec COMMAND {} \;
  • 参数替换xargs
    • 批量创建和删除用户
    • 查找有特殊权限的文件,并排序
    • 并发执行多个进程

locate概述

locate概述
  1.locate查询依赖于系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db
  2.索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库
  3.索引构建过程需要遍历整个根文件系统,很消耗资源
  4.locate和updatedb命令来自于mlocate包

locate可以快速的定位文件的位置,它的搜索速度非常快。基本上一回车就能立即找到(无论文件有多少,locate都能快速的找到)。

为什么locate的查找速度这么快?
locate已经事先把所有磁盘文件的信息建立在一个索引数据库里“/var/lib/mlocate/mlocate.db”,这个索引数据库已经存放了文件的列表和路径。
在这里插入图片描述
应用:tomcat的catalina.out日志文件,这个文件动不动几天就打印了好几百兆的日志内容,占据了大量的磁盘空间。现在需要快速找到这个日志文件,将其清理或移走。
在这里插入图片描述
上图是公司测试环境的catalina.out日志文件,短短几天就从0K打印了109M的内容了,之前我找这个日志文件都是一级一级目录的去cd,这样速度很慢。使用了locate后,命令后面直接跟文件名,一回车就找到了。

locate的缺点:mlocate.db数据库不是实时更新的,如果新增了一个文件,则需要使用“updatedb”更新“mlocate.db”数据库才可以找到新增的文件。也就是mlocate.db会有一定的滞后性。

安装mlocate

在这里插入图片描述
安装完mlocate包后,就可以执行updatedb了
在这里插入图片描述

locate格式

格式:
  locate [OPTION]... [PATTERN]...

常用选项
  -i     不区分大小写的搜索
  -n  N  只列举前N个匹配项目
  -r     使用基本正则表达式

范例:

#搜索名称或路径中包含"“conf"的文件
locate conf

#使用Regex来搜索以".conf"结尾的文件
locate -r '\.conf$'

在这里插入图片描述

locate特点

locate特点
  1.查找速度快
  2.模糊查找
  3.非实时查找(滞后性)
  4.搜索的是文件的全路径,不仅仅是文件名
  5.可能只搜索到用户具备读取和执行权限的目录
  6.适合查找不经常变更的文件,如系统配置文件,日志文件等

find概述

find是实时查找工具,通过遍历指定路径完成文件查找。

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

find特点

find工作特点
  1.查找速度略慢(在磁盘上挨个的找)
  2.精准查找
  3.实时查找
  4.查找条件丰富
  5.可能只搜索用户具备读取和执行权限的目录

格式

find [OPTION]...[查找路径][查找条件][处理动作]
find 命令的基本信息如下:
  命令名称:find。
  英文原意:search for files in a directory hierarchy.
  所在路径:/bin/find。
  执行权限:所有用户。
  功能描述:在目录中查找文件。
  查找路径: 指定具体目标路径; 默认为当前目录
  查找条件: 指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
  处理动作: 对符合条件的文件做操作,默认输出至屏幕

指定搜索目录层级

-maxdepth level  最大搜索目录深度,指定目录下的文件为第1级
-mindepth level  最小搜索目录深度

f范例:查找/etc目录下的最深2级最浅2级目录

find /etc -maxdepth 2 -mindepth 2
#因为是以/etc为目标,所以/etc下的dnf是第一级目录,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对每个目录先处理目录内的文件,再处理目录本身

find /data/test/ -depth

在这里插入图片描述
在这里插入图片描述

文件名和inode查找

-name "文件名称"        支持使用glob,如:*, ?, [], [^], 通配符要加双引号引起来
-iname "文件名称"       不区分字母大小写
-inum n                按inode号查找
-samefile name         相同inode号的文件
-links n               链接数为n的文件
-regex "“PATTERN""     以PATTERN匹配整个文件路径,而非文件名称

在这里插入图片描述
使用通配符时,一定要使用双引号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按inode号查找
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
find / -samefile
在这里插入图片描述
正则表达式搜索,以conf结尾的文件
在这里插入图片描述

属主、属组查找

-user USERNAME     查找属主为指定用户(UID)的文件
-group GRPNAME     查找属组为指定组(GID)的文件
-uid UserID        查找属主为指定的UID号的文件
-gid GroupID       查找属组为指定的GID号的文件
-nouser            查找没有属主的文件
-nogroup           查找没有属组的文件

在这里插入图片描述

文件类型查找

-type TYPE

TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s: 套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件

范例:查找/home下的普通文件
在这里插入图片描述
查找/home下的目录
在这里插入图片描述
在这里插入图片描述

空文件或目录查找

-empty

在这里插入图片描述

组合条件

与: -a , 默认多个条件是与关系,所以可以省略-a
或: -o
非: -not !

范例:查看/etc/下的目录或者链接文件
在这里插入图片描述
在这里插入图片描述

找出/tmp目录下,属主不是root,且文件名不以f开头的文件
find /tmp \( -not -user root -a -not -name 'f*' \) -ls
find /tmp -not \( -user root -o -name 'f*' \) -ls

排除目录

prune: v. 修剪,修整;删除,削减

查找/etc/下,除/etc/security目录的其它所有.conf后缀的文件
find /etc -path '/etc/security' -a -prune -o -name "*.conf"

查找/etc/下,除/etc/security和/etc/systemd, /etc/dbus-1三个目录的所有.conf后缀的文件
find /etc \( -path "/etc/security" -o -path "/etc/systemd" -o -path "/etc/dbus-1" \) -a -prune -o -name "*.conf"

排除/proc和/sys目录
find / \( -path "/sys" -o -path "/proc” \) -a -prune -o -type f -a -mmin -1

文件大小查找

-size [+|-]#UNIT       常用单位:k,M,G,c (byte,注意大小写敏感
#UNIT:                 表示(#-1,#],   如:6k 表示(5k,6k]
-#UNIT                 表示[O,#-1],   如:-6k 表示[O,5k]
+#UNIT                 表示(#, ∞) ,   如:+6k 表示(6k, ∞)

find -size [+|-]

常用单位:k,m,G,c(byte) ,注意大小写敏感
应用:系统里有一个大约210M的catalina.out的日志文件
在这里插入图片描述
在这里插入图片描述

时间戳查找

linux下,一个文件有三种时间:
  1.访问时间:atime  对文件进行一次读操作,它的访问时间就会改变,cat、more等操作。
  2.修改时间:mtime  文件的内容被最后一次修改的时间。
  3.状态时间:ctime  文件的状态被改变的时候,状态时间就会随之改变。
find -atime [+|-]num
num  表示[num,num+1)
+num 表示[num+1,∞]
-num 表示[0,num)

以“分钟”为单位
-amin
-mmin
-cmin

find ./ -ctime -5

在这里插入图片描述

处理动作

-print:  默认的处理动作,显示至屏幕
-ls:     类似于对查找到的文件执行“ls -dils”命令格式输出
-fls file: 查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:    删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
备份配置文件,添加.orig这个扩展名
find -name ".conf" -exec cp {} {}.orig  \;

提示删除存在时间超过3天以上的joe的临时文件
find / tmp -ctime +3 -user joe -ok rm {} \;

在主目录中寻找可被其它用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \;

查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data -type f -perm 644 -name "*.sh" -exec chmod 755 {} \;

-print

在这里插入图片描述

-delete

找到文件,将之删除
在这里插入图片描述

-fls file

在这里插入图片描述

-ok COMMAND {} ;

交互式的方式
在这里插入图片描述

-exec COMMAND {} ;

非交互式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参数替换xargs

由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为参数

另外,许多命令不能接受过多参数,命令执行可能会失败,xargs可以解决

注意:文件名或者是其他意义的名词内含有空格符的情况

find经常和xargs命令进行组合,形式如下:

find | xargs COMMAND

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

find /data/test -name "*.txt" |xargs ls -Sl

在这里插入图片描述

批量创建和删除用户

echo user{1..10} |xargs -n1 useradd
echo user{1..100} |xargs -n1 userdel -r

查找有特殊权限的文件,并排序

find /bin/ -perm /7000 | xargs ls -Sl 
#此命令和上面有何区别?
find /bin/ -perm -7000 | xargs ls -Sl

在这里插入图片描述
在这里插入图片描述

以字符nul分隔(xargs默认使用空格做分隔符,如果有的文件就是有空间的文件名,那就会报错)

find -type f -name "*.txt" -print0 | xargs -0 rm

并发执行多个进程

seq 100 |xargs -i -P10 wget -P / data  http://10.0.0.8/{}.html

并行下载bilibi7i视频

yum -y install python3-pip 
pip3 install you-get
seq 60 | xargs -i -P3 you-get https://www.bilibili.com/video/Bv14K411w7UF?p={}

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

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

相关文章

gps 轨迹点如何绘制路径

作为用户,我们进行户外运动后,有的人喜欢分享自己的运动记录。这个时候就比较关注自己的运动轨迹路线了。 一.将经纬度转化为轨迹方法1 1.将gps 打点文件导出。 2.将经纬度点转换成如下格式。 3.将转换后的经纬度填入如下地址: https://ww…

必了解的 20 个 AI 术语解析(下)

AI 领域的基础概念和相关技术有很多,这篇文章里,作者就深入浅出地介绍了相应的内容,感兴趣的同学们,不妨来看一下。 必了解的 20 个 AI 术语解析(下)© 由 ZAKER科技 提供 本文专为非技术背景的 AI 爱…

如何修改360免费wifi热点的频带为2.4G或者5G

有的时候使用电脑广播出热点给嵌入式设备用进而进行抓包,但是他默认广播的是5G Hz的,嵌入式设备扫不到热点。那么如何让他广播2.4G H在呢? CMD控制台使用命令netsh wlan show drivers查看设备驱动: 802.11g 和 802.11n 意味着你的…

Python酷库之旅-第三方库Pandas(071)

目录 一、用法精讲 286、pandas.Series.dt.to_pydatetime方法 286-1、语法 286-2、参数 286-3、功能 286-4、返回值 286-5、说明 286-6、用法 286-6-1、数据准备 286-6-2、代码示例 286-6-3、结果输出 287、pandas.Series.dt.tz_localize方法 287-1、语法 287-2、…

Selenium 自动化测试最佳实践

1 编码前的准备工作与基本指导思想 测试一个网站就是针对该网站测试场景的一次项目开发,所以项目开发中的理念与思想可以借鉴过来。接到测试需求后,不要一开始就陷入按钮、字段、下拉框等页面元素怎么操作的技术细节当中,而要站在最终用户的…

《MySQL数据库》 可视化工具的使用—/—<3>

一、如何使用可视化工具navicat 1、点击左上角的连接中的MySQL 输入主机地址连接虚拟机,找到自己虚拟机中的ip地址输入即可,连接名随意修改 然后点击测试连接,连接成功即可点击确定 2、新建库 直接鼠标右击连接名称ahao001,点击…

react学习笔记:7

预览:(fetch发送请求、SPA、连续解构赋值、消息订阅、react router路由第三方库) 1、连续解构赋值 总结: 1、连续解构赋值的写法:对象包对象,第二个解构的value一定也是在{}内部的写法 2、消息订阅发布 …

SwiftUI 中 TabView 视图导航栏上按钮丢失问题的解决

问题现象 在某些情况下,SwiftUI 中 TabView 子视图中导航栏上的 ToolbarItem 会消失不见。 如上图所示:在子视图的 Kick Off 导航栏按钮被按下并回退到 TabView 中的主视图之后,其右上角的按钮竟然“神奇”的消失了!该如何解决它呢? 在本篇博文中,您将学到以下内容 问题…

【二分查找】3143. 正方形中的最多点数

本文涉及的基础知识点 C二分查找 LeetCode3143. 正方形中的最多点数 给你一个二维数组 points 和一个字符串 s ,其中 points[i] 表示第 i 个点的坐标,s[i] 表示第 i 个点的 标签 。 如果一个正方形的中心在 (0, 0) ,所有边都平行于坐标轴&…

大数据-Big Data

GPT-4o (OpenAI) 大数据(Big Data)指的是无法使用传统方法和工具在合理的时间内处理和分析的大规模数据集。大数据通常具有以下几种特征,也称为5V特征: 1. Volume(数据量):大数据涉及到大量的信…

深度学习常用语句for param in params问题:为什么修改param之后,params对应元素也随之改变?

def sgd(params, lr, batch_size): #save"""小批量随机梯度下降"""with torch.no_grad():for param in params:param - lr * param.grad / batch_sizeparam.grad.zero_()sgd([w, b], lr, batch_size) 上述代码中,param遍历params的…

深度学习--------------Kaggle房价预测

目录 下载和缓存数据集访问和读取数据集总代码 数据预处理训练K折交叉验证模型选择总代码提交你的Kaggle预测提交Kaggle 下载和缓存数据集 import hashlib import os import tarfile import zipfile import requests# download传递的参数分别是数据集的名称、缓存文件夹的路径…

LabVIEW液压传动系统

开发了一种高效的液压传动系统,其特点在于采用LabVIEW软件与先进的硬件配合,实现能量的有效回收。此系统主要应用于工业机械中,如工程机械和船机械等,通过优化液压泵和马达的测试台设计,显著提高系统的能效和操作性能。…

华为OD机试 - 最长子字符串的长度(二) (Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华…

为什么要推荐R语言?欢迎订阅专栏《R 探索临床数据科学》

统计分析的强大支持: R语言最初是为统计分析而设计的,至今仍然在这方面保持领先地位。无论是基础统计、回归分析、时间序列分析还是高级统计建模,R都能提供丰富的函数和包,帮助我们轻松实现各种统计分析,很简单的代码就…

搭建个人博客需要做哪些事

文章目录 前言搭建步骤站点服务器站点域名注册域名ICP 备案公安备案域名解析 博客图床图床是什么图床搭建 博客站点搭建建站工具本地搭建博客部署 站点运营百度收录百度统计 总结 前言 花了几天时间,搭建了一个个人博客,也算是完成了年初立的一个flag&a…

VSCODE调试程序

1、打开 2、具体测试过程 (1)把路径改成真正执行的程序的绝对路径(${workspaceFolder}这个代表就是项目根目录) (2)然后先注释preLauchTask。 (3)重新编译一下文件,make…

全新神经网络:Kolmogorov-Arnold网络更具解释性,有望为物理学家提供新假设

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

FDE Solver 的 enabled 选项是不开放的

FDE Solver 的 enabled 选项是不开放的 正文正文 在 Mode 工程文件中,只能添加一个 FDE Solver,并且,不同于结构组件,对于结构组件,我们通常可以使用如下脚本将其设置为不启用状态。 比如,我们这里有一个三角型结构。 我们通过如下脚本设置其为不启用状态后, CAD 显示…

准确度与精密度:差异和示例

准确度与精密度:差异和示例 文章目录 一、说明二、准确性的定义三、精度的定义四、飞镖板上的准确度与精确度五、如何记住准确度与精确度六、如何测试准确度和精密度 一、说明 当您依赖数据得出结论时,准确度和精确度是测量的关键属性。这两个概念都适…