常用linux多场景查找文件的方法及对比

news2025/2/28 5:15:26

3eb003972217ea812785c55e3c9876d6.jpeg

波哥整理了在linux中根据文件名称查文件,根据文件内容查找文件,根据进程号查找文件的方法及命令详细解释。

一、find命令

find命令可以在指定目录下查找文件,其语法如下:

find <目录> <选项> <匹配模式>

选项和匹配模式是可选的。其中,选项用于控制查找行为,匹配模式用于匹配文件名。以下是常用选项:

  • -name <文件名>:按文件名匹配文件,可以使用通配符,如-name '*.txt'

  • -type <文件类型>:按文件类型匹配文件,常用的文件类型包括f(普通文件)、d(目录)和l(符号链接)等。

  • -mtime <时间>:按文件修改时间匹配文件,<时间>可以是一个数字,表示在多少天内修改过的文件,也可以使用+-符号表示在多少天之前或之后修改过的文件。

  • -user <用户名>:按文件拥有者匹配文件。

  • -size <大小>:按文件大小匹配文件,<大小>可以是一个数字,表示文件大小(单位为字节),也可以使用+-符号表示比多少字节大或小的文件。

以下是一些示例命令:

# 在当前目录及其子目录中查找所有扩展名为.txt的文件
find . -name '*.txt'

# 在根目录中查找所有类型为目录的文件
find / -type d

# 在当前目录中查找所有大小为0的文件
find . -size 0

# 在当前目录中查找所有拥有者为root的文件
find . -user root

# 在当前目录中查找所有修改时间在7天以内的文件
find . -mtime -7

二、locate命令

locate命令可以快速定位文件,它不会实时扫描文件系统,而是基于一个预先生成的文件名数据库进行搜索。使用locate命令需要安装mlocate软件包。其语法如下:

locate <匹配模式>

以下是一些示例命令:

# 查找所有扩展名为.txt的文件
locate '*.txt'

# 查找所有包含"linux"关键词的文件
locate 'linux'

# 查找所有包含"linux"关键词的文件,并且文件名以.txt为扩展名
locate 'linux' | grep '\.txt$'

需要注意的是,locate命令只能查找文件名,不能查找文件内容。

三、grep命令

grep命令可以在文件中搜索指定的文本,其语法如下:

grep <选项> <匹配模式> <文件>

以下是常用选项(续):

  • -n:显示匹配行的行号。

  • -r:递归搜索子目录。

  • -w:只匹配整个单词。

  • -e <正则表达式>:使用正则表达式进行匹配。

以下是一些示例命令:

# 在文件中查找"hello"关键词
grep 'hello' file.txt

# 在文件中查找"hello"关键词,并忽略大小写
grep -i 'hello' file.txt

# 在文件中查找"hello"关键词,并显示匹配行的行号
grep -n 'hello' file.txt

# 递归搜索子目录,查找所有扩展名为.c的文件,并在其中查找"main"关键词
grep -r 'main' --include='*.c' .

# 使用正则表达式进行匹配,查找所有以数字开头的行
grep -e '^[0-9]' file.txt

grep根据内容查找文件

grep [OPTIONS] PATTERN [FILE...]
  • OPTIONS:选项,用于指定查找时的一些参数。

  • PATTERN:要查找的模式或字符串。

  • FILE:可选参数,要查找的文件,可以是一个或多个文件。

常用选项

  • -i:忽略大小写。

  • -v:反向查找,即输出未匹配的行。

  • -n:显示匹配行的行号。

  • -r:递归搜索子目录。

  • -w:只匹配整个单词。

  • -e <正则表达式>:使用正则表达式进行匹配。

下面是一些常用的grep命令示例:

# 在文件中查找"hello"关键词
grep 'hello' file.txt

# 在文件中查找"hello"关键词,并忽略大小写
grep -i 'hello' file.txt

# 在文件中查找"hello"关键词,并显示匹配行的行号
grep -n 'hello' file.txt

# 反向查找,输出未匹配的行
grep -v 'hello' file.txt

# 递归搜索子目录,查找所有扩展名为.c的文件,并在其中查找"main"关键词
grep -r 'main' --include='*.c' .

# 使用正则表达式进行匹配,查找所有以数字开头的行
grep -e '^[0-9]' file.txt

四、根据进程号找文件

lsof [OPTIONS] [PID]
  • OPTIONS:选项,用于指定查找时的一些参数。

  • PID:要查找的进程号,如果不指定则表示查找所有进程的打开文件。

常用选项

  • -a:表示多个条件都要满足。

  • -c <进程名称>:按进程名称过滤。

  • -d <文件描述符>:按文件描述符过滤。

  • -u <用户名称>:按用户名称过滤。

  • -p <进程号>:按进程号过滤。

  • -t <文件类型>:按文件类型过滤。

下面是一些常用的lsof命令示例:

# 查找进程号为12345的打开文件
lsof -p 12345

# 查找进程名为nginx的打开文件
lsof -c nginx

# 查找所有文件描述符为3的打开文件
lsof -d 3

# 查找所有属于用户root的打开文件
lsof -u root

# 查找所有TCP连接的打开文件
lsof -i TCP

# 查找所有进程号为12345且文件描述符为3的打开文件
lsof -p 12345 -d 3

# 查找所有进程名为nginx且文件类型为IPv4的打开文件
lsof -c nginx -t IPv4

五、whereis

whereis 命令用于查找特定类型的文件在文件系统中的位置。

使用方法:

whereis [选项] 文件名

示例:

whereis python

输出结果:

python: /usr/bin/python3.8 /usr/bin/python3.8-config /usr/lib/python3.8 /usr/lib/python2.7 /etc/python3.8 /usr/include/python3.8 /usr/share/python

解释:

whereis 命令在系统中查找名为 python 的文件,并在结果中列出该文件的位置。

上述结果表明:

在系统中有多个名为 python 的文件,包括 /usr/bin/python3.8、/usr/lib/python3.8 等。

六、which

which 命令用于查找可执行文件在系统路径中的位置。

使用方法:

which [选项] 可执行文件名

示例:

which python

输出结果:

/usr/bin/python

解释:

which 命令在系统路径中查找名为 python 的可执行文件,并在结果中列出该文件的位置。上述结果表明,在系统路径 /usr/bin 中存在一个名为 python 的可执行文件。

七、type

type 命令用于查找命令在系统中的位置。

使用方法:

type [选项] 命令名

示例:

type ls

输出结果:

ls is aliased to `ls --color=auto'

解释:

type 命令查找系统中名为 ls 的命令,并在结果中显示该命令的类型。上述结果表明,ls 命令是一个别名,其实际执行的命令是 ls --color=auto

总结:

命令优点缺点
find- 功能强大,支持多种条件搜索。
- 可以执行各种操作,如复制、删除、重命名等。
- 可以搜索任何类型的文件和目录。
- 搜索范围和搜索条件非常灵活,可以搜索特定大小、特定类型、特定权限等。
- 支持正则表达式搜索。
- 可以在搜索结果中排除指定文件或目录。
- 需要一定的技巧和时间去了解和使用。
- 速度可能比其他一些命令慢,因为需要扫描整个文件系统。
- 需要一定的权限才能执行某些操作。
- 不适用于快速定位文件位置。
locate- 速度非常快,因为使用了缓存。
- 适用于快速定位文件位置。
- 不需要指定搜索目录,可以在整个文件系统中搜索文件。
- 可能会出现搜索结果不准确的情况,因为使用了缓存。
- 只能搜索文件名,无法搜索文件内容。
- 只能搜索已经建立索引的文件,如果文件尚未建立索引,则无法找到。
whereis- 可以快速查找可执行文件、源文件和帮助文档等文件。
- 可以在多个搜索目录中查找文件。
- 支持正则表达式搜索。
- 只能搜索二进制文件、源文件和帮助文档等特定类型的文件,无法搜索其他类型的文件。
- 只搜索特定目录,无法在整个文件系统中搜索文件。
which- 可以快速查找可执行文件、脚本等文件。
- 可以在多个搜索目录中查找文件。
- 支持正则表达式搜索。
- 只能搜索可执行文件、脚本等特定类型的文件,无法搜索其他类型的文件。
- 只搜索特定目录,无法在整个文件系统中搜索文件。
type- 可以快速查找可执行文件、命令别名等。
- 可以查看文件类型和位置。
- 可以查看命令是否是内置命令。
- 只能查找特定类型的文件,无法搜索其他类型的文件。
- 只能查找特定目录,无法在整个文件系统中搜索文件。

波哥开启波哥帮办业务:

想考PMP,软考的可以咨询波哥,波哥能保证我的渠道优于市面上90%自己找渠道的散户小朋友,绝对无坑。

 +V 

itboge1521
 
 

腾讯云服务器3年408复制链接或者点阅读原文

https://url.cn/0LMFe5AG

波哥

IT行业近二十年的IT老炮。常年潜伏于国企、各一二线大厂中。硬件集成入行,直至虚拟技术、容器化。岗位历经系统集成、DBA、全栈开发、sre、项目经理、产品经理、部门总监。

主要作品:
  • IT类资源汇聚门户:https://www.98dev.com

  • 各大短视频平台:98dev

  • 各大主要技术论坛博客:IT运维技术圈

  • 长视频教学作品:《波哥讲网络》《波哥讲git》《波哥讲gitlab》

  • 小程序:IT面试精选

  • 构建技术社区:+V itboge1521 入学习交流群

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

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

相关文章

vue-4:注册组件,组件传参,特殊属性ref $parent $root,透传,内置组件,自定义指令,mixins混入

注册组件&#xff0c;使用组件&#xff08;项目中都是写component中&#xff09; 为什么用组件&#xff1a;组件可以复用&#xff0c;每一个组件都是独立的&#xff0c;模板&#xff0c;数据&#xff0c;css样式互不影响 全局注册组件component&#xff1a;请勿滥用全局组件in…

一个打通基于XML管理Bean

目录 准备工作 添加依赖 引入配置文件 获取bean ①方式一&#xff1a;根据id获取 ②方式二&#xff1a;根据类型获取 ③方式三&#xff1a;根据id和类型 ④注意的地方 ⑤扩展知识 依赖注入之setter注入 ①创建学生类Student ②配置bean时为属性赋值 ③测试 依赖注…

Powerlink协议在嵌入式linux上的移植和主从站通信(电脑和linux板通信实验)

使用最新的openPOWERLINK 2.7.2源码&#xff0c;业余时间搞定了Powerlink协议在嵌入式linux上的移植和测试&#xff0c;并进行了下电脑和linux开发板之间的通信实验。添加了一个节点配置&#xff0c;跑通了源码中提供的主站和从站的两个demo。这里总结下移植过程分享给有需要的…

飞桨EasyDL月刊:4月功能全新升级,模型训练步骤缩短63%

亲爱的开发者&#xff1a; 近来以生成式 AI、多模态预训练大模型为代表的技术变革正席卷全球&#xff0c;与此相关的智能化工具和平台陆续发布。飞桨 EasyDL 和 BML 位于文心全景图的工具与平台层&#xff0c;提供大模型开发套件及多种建模方式&#xff0c;全面支持基于大模型能…

访客接入-唯一客服系统文档中心

网站可以通过多种方式接入客服系统&#xff0c;直接跳转链接&#xff0c;或者在页面右下角弹窗 访客链接 可以在自己的网站接入&#xff0c;访客独立链接&#xff0c;入口形式可以完全自己写&#xff0c;只是跳转链接。 例如下面的访客链接https://gofly.v1kf.com/chatIndex?k…

Angular开发之——安装Angular CLI并初始化项目(02)

一 概述 Angular CLI介绍及开发环境准备安装Angular CLI开发工具使用Angular CLI初始化Angular项目简单体验Angular 二 Angular CLI介绍及开发环境准备 2.1 Angular CLI介绍 目前&#xff0c;无论你使用什么前端框架&#xff0c;都必须要使用到各种NodeJS工具&#xff0c;An…

Leetcode 剑指 Offer II 026. 重排链表

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&a…

day32_HTML

今日内容 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 晨考 一、二阶段介绍 第一阶段: JavaSE, 对java基本语法,面向对象知识,和编程有了基本了解 第二阶段: javaweb阶段 开发入门 前端 网页(用户直接交互界面)html 网页css 美化js 动起来 - jquerybootstrap 服务器 …

C++三部曲|C++内存管理全景指南

导语 深入理解C内存管理&#xff0c;一文了解所有C内存问题&#xff0c;万字长文&#xff0c;建议收藏 随着人工智能&#xff0c;云计算等技术的迅猛发展&#xff0c;让Python&#xff0c;go等新兴语言流行了起来&#xff0c;很多人以为C可能已经过时了&#xff0c;确实&…

《vector的模拟实现》

本文主要介绍vector的常见接口的模拟实现 文章目录 vector中常用类成员二、vector的底层结构三、vector的默认成员函数构造函数1—空构造构造函数2—迭代器区间构造拷贝构造函数赋值运算符重载析构函数 四、迭代器相关的函数迭代器的分类迭代器对应的STL容器分类迭代器失效问题…

软件系统架构对测试的影响分析

我们知道软件系统的架构会对系统测试产生影响&#xff0c;而到底会产生哪些影响呢?   首先看一下软件系统架构到底是如何定义的?   软件系统架构就是组成系统的主要重要模块、过程、数据的管理和分配、用户界面的种类和风格&#xff0c;以及系统运行平台等。其中包括它们…

在MacBook上编译v3s内核出错

刚开始的时候&#xff0c;我捣鼓esp8266「现在我也还有8266的开发板&#xff0c;后面也还是会推荐」 后面&#xff0c;我推荐了esp32&#xff0c;买了esp32开发板&#xff0c;可以做uac相关的实验&#xff0c;也可以搞图形界面了。 现在&#xff0c;终于到捣鼓Linux了 PS&#…

完整的医学影像PACS系统全套源码(带三维重建)

一套完整的医学影像存储与传输系统源码&#xff0c;PACS部分主要提供医学影像获取、影像信息网络传递、大容量数据存储、影像显示和处理、影像打印等功能。 RIS主要提供分诊登记、叫号、检查报告生成和打印等功能。本套影像存储与传输系统将二者进行无缝对接&#xff0c;提供了…

Navicat Premium 15安装注教程

Navicat Premium 15安装 准备工作 下载好安装包navicat150_premium_cs_x64和安装完成Navicat Premium 15 链接&#xff1a;https://pan.baidu.com/s/1TJs3pjAXJXhu7-13DJLzpg 提取码&#xff1a;hunk 安装Navicat Premium 15 无脑操作&#xff0c;下一步下一步就行了&…

【利用AI让知识体系化】万字深入浅出Nginx

思维导图 文章目录 思维导图 第一部分&#xff1a;入门篇1.1 起步下载和安装Nginx启动NginxNginx配置文件Nginx命令行总结 1.2 Nginx的基本架构1.3 安装和配置Nginx1.4 Nginx的基本操作 第二部分&#xff1a;核心篇2.1 Nginx的请求处理2.2 Nginx的缓存机制2.3 Nginx的负载均衡机…

二叉树基础

https://www.bilibili.com/video/BV1Hy4y1t7ij/?spm_id_from333.337.search-card.all.click&vd_source168d5f618ec1a68e1f162d91a35a12b6 完全二叉树的底部一定是从左到右是连续的。满二叉树一定是完全二叉树。 二叉搜索树&#xff1a;左边左子树的所有节点都小于这个中间…

【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 参数服务器通信及ros常用工具指令介绍 0.参数服务器概念1.参数服务器增加/修改参数&#xff1a;2.参数服务器查找参数3.参数服务器删除参…

大家都是拷贝,凭什么你这么秀?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 之前关于 Python 的作用域、赋值、参数传递&#xff0c;我们接连谈了几篇文章&#xff1a; Python常见问题&#xff1a;全局变量和局部变量…

Marking

Marking 题目描述 输入输出 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; ll gcd(ll a,ll b) {return b0?a:gcd(b,a%b); } int main() {ll t;cin>>t;ll n,d,k;while(t--){cin>>n>>d>>k;k--;if(g…

数据结构学习分享之树的介绍

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:数据结构学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你了解更多数据结构的知识   &#x1f51d;&#x1f51d; 数据结构第六课 1. 前言&a…