当前位置: 首页 > article >正文

Linux基础命令which 和 find 简明指南

🎯 Linux which 和 find 命令简明指南:从入门到实用
📅 更新时间:2025年6月7日
🏷️ 标签:Linux | which | find | 命令行 | 文件查找

文章目录

  • 前言
  • 🌟 一、Linux 命令的本质与 which、find 的作用
    • 1.Linux 命令的本质
    • 2.which 和 find 的核心价值
  • 📌 二、which 命令:定位可执行程序
    • 1.基本用法
    • 2.示例
  • 🧭 三、find 命令:灵活搜索文件
    • find命令按文件名查找
      • 1.基础语法
      • 2.示例
      • 3.搭配通配符进行搜索
    • find命令按文件大小查找
      • 1.基础语法
      • 2.示例:
  • 📚四、总结


前言

本文将循序渐进地介绍 Linux 中 whichfind 命令,涵盖其本质、基础用法、进阶技巧和实际应用。通过精炼的示例和实践建议,带你快速掌握这两个命令,助你在 Linux 系统中高效定位可执行程序和文件


🌟 一、Linux 命令的本质与 which、find 的作用

1.Linux 命令的本质

在 Linux 中,命令本质上是一个个二进制可执行程序,存储在文件系统中的特定目录(如 /bin, /usr/bin)。这些程序通过 PATH 环境变量被 shell 找到并执行。which 和 find 是两款用于定位程序和文件的强大工具

2.which 和 find 的核心价值

which:查找 PATH 中可执行文件的路径,确认命令位置。

find:在文件系统中搜索文件或目录
价值:快速定位命令或文件,提升效率,避免手动搜索,支持多种条件

📌 二、which 命令:定位可执行程序

1.基本用法

which 查找 PATH 环境变量中的命令路径,返回第一个匹配的可执行文件路径

which 要查找的命令

2.示例

比如我们之前学过的一些命令

ls
cd
touch
mkdir
rm

我们来试试看,分别输入下面的查询

which ls
输出:/usr/bin/lswhich cd
输出: 

对,你没看错,当查询到cd 命令的时候 ,输出为空!!!!???

✅ 关键原因:cd 不是外部命令,而是 Shell 内建命令(builtin)
cd 是 bash(或者你当前使用的 Shell)自带的一个内建命令,它不会在 /bin 或 /usr/bin 里以独立程序的形式存在

而which查询的是 「PATH 路径下的可执行文件」 ,但 cd 不是文件,而是 Shell 内部的函数或机制,所以 which 查不到它

which touch
输出:/usr/bin/touchwhich mkdir
输出:/usr/bin/mkdirwhich rm
输出:/usr/bin/rm

🧭 三、find 命令:灵活搜索文件

在windows系统中,我们也有文件搜索功能
在这里插入图片描述
那么在Linux中,我们通过find命令去搜索文件

find命令按文件名查找

1.基础语法

find 起始路径  -name "被查找文件名"

这个起始路径比如我写一个 /
就代表从根目录开始搜索

2.示例

比如我此时有一个问题
需要全盘搜索本机名为test的文件地址
那么命令如下

find / -name "test"

输出:

/usr/share/alsa/init/test
/usr/lib/python3.8/test
/usr/lib/modules/5.15.0-119-generic/kernel/drivers/ntb/test
/usr/lib/modules/5.15.0-119-generic/kernel/drivers/firmware/efi/test
/usr/lib/modules/5.15.0-139-generic/kernel/drivers/ntb/test
/usr/lib/modules/5.15.0-139-generic/kernel/drivers/firmware/efi/test
/usr/lib/python3/dist-packages/future/backports/test
/usr/lib/python3/dist-packages/future/moves/test
/usr/lib/python3/dist-packages/systemd/test
/usr/bin/test
/usr/src/linux-hwe-5.15-headers-5.15.0-139/tools/testing/nvdimm/test
/usr/src/linux-hwe-5.15-headers-5.15.0-139/lib/raid6/test
/usr/src/linux-hwe-5.15-headers-5.15.0-139/drivers/base/test
/usr/src/linux-hwe-5.15-headers-5.15.0-139/drivers/iio/test
/usr/src/linux-hwe-5.15-headers-5.15.0-139/drivers/ntb/test
/usr/src/linux-hwe-5.15-headers-5.15.0-139/drivers/firmware/efi/test
/usr/src/linux-hwe-5.15-headers-5.15.0-119/tools/testing/nvdimm/test
/usr/src/linux-hwe-5.15-headers-5.15.0-119/lib/raid6/test
/usr/src/linux-hwe-5.15-headers-5.15.0-119/drivers/base/test
/usr/src/linux-hwe-5.15-headers-5.15.0-119/drivers/iio/test
/usr/src/linux-hwe-5.15-headers-5.15.0-119/drivers/ntb/test
/usr/src/linux-hwe-5.15-headers-5.15.0-119/drivers/firmware/efi/test

我们会发现有非常多的名为test的文件就被搜索出来了

3.搭配通配符进行搜索

根据语法

find 起始路径  -name "被查找文件名"

被查找的文件名,支持使用通配符*来做模糊查询
1.符号 *表示通配符,即匹配任意内容(包含空) 示例:

2.test*表示匹配任何以test开头的内容

3.*test表示匹配任何以test结尾的内容

4.*test*表示匹配任何包含test的内容

基于通配符的含义,可以结合find命令做文件的模糊查询

问题示例1:
要求找以test开头的文件

输入:

find / -name "test*"

输出:

//仅列出部分!!!!!!!!!!!!!!!
/usr/share/perl/5.30.0/ExtUtils/testlib.pm
/usr/share/perl5/Mail/Mailer/testfile.pm
/usr/share/man/man1/test.1.gz
/usr/share/sounds/speech-dispatcher/test.wav
/usr/share/doc/binutils/test-summary-amd64.gz
/usr/share/doc/docbook-xml/examples/test-4.1.2.xml
/usr/share/doc/docbook-xml/examples/test-si-url-docbook.org-4.1.2.xml
/usr/share/doc/docbook-xml/examples/test-si-url-oasis-4.3.xml
/usr/share/doc/docbook-xml/examples/test-si-url-docbook.org-4.4.xml
/usr/share/doc/docbook-xml/examples/test-si-url-oasis-4.1.2.xml
/usr/share/doc/docbook-xml/examples/test-legacy-si-4.3.xml
/usr/share/doc/docbook-xml/examples/test-si-url-docbook.org-4.2.xml
/usr/share/doc/docbook-xml/examples/test-si-url-docbook.org-4.3.xml

我们会发现,都是以test开头的文件名

问题示例2:
要求找以test结尾的文件

输入:

find / -name "*test"

输出:

//仅列出部分!!!!!!!!!!!!!!!
/usr/share/bash-completion/completions/py.test
/usr/share/bash-completion/completions/pytest
/usr/share/im-config/data/21_ibus.conf.pretest
/usr/share/im-config/data/78_none.rc.pretest
/usr/share/im-config/data/90_bogus.rc.pretest

我们会发现,都是以test结尾的文件名

问题示例3:
要求找包含test的文件
输入:

find / -name "*test*"

输出:

//仅列出部分!!!!!!!!!!!!!!!
/usr/src/linux-hwe-5.15-headers-5.15.0-139/tools/perf/arch/x86/tests
/usr/src/linux-hwe-5.15-headers-5.15.0-139/tools/perf/tests
/usr/src/linux-hwe-5.15-headers-5.15.0-139/tools/perf/tests/shell/test_uprobe_from_different_cu.sh
/usr/src/linux-hwe-5.15-headers-5.15.0-139/tools/testing/selftests/cpu-hotplug/cpu-on-off-test.sh

我们会发现,都是包含test的文件名

find命令按文件大小查找

1.基础语法

find 起始路径 -size +/-  数字 k/M/G

+ -表示大于和小于
k表示kb
M表示MB
G表示GB

2.示例:

查找小于10kb的文件

find / -size -10k

查找大于100MB的文件

find / -size +100M

查找大于1GB的文件

find / -size +1G

📚四、总结

which 快速定位命令路径,find灵活搜索文件,二者是 Linux 文件管理的核心工具。掌握它们能大幅提升效率,适合日常操作和脚本开发

❤️ 如果你觉得本文对你有帮助,欢迎点赞、评论与收藏。更多 Linux 与 C++ 开发知识,敬请关注后续更新!

相关文章:

Linux基础命令which 和 find 简明指南

🎯 Linux which 和 find 命令简明指南:从入门到实用 📅 更新时间:2025年6月7日 🏷️ 标签:Linux | which | find | 命令行 | 文件查找 文章目录 前言🌟 一、Linux 命令的本质与 which、find 的作…...

【学习记录】在 Ubuntu 中将新硬盘挂载到 /home 目录的完整指南

文章目录 📋 一、准备工作1. 备份重要数据2. 确认新硬盘设备信息 🛠️ 二、格式化新硬盘(如未格式化)1. 格式化为 ext4 文件系统(推荐) 🔁 三、临时挂载并迁移数据1. 创建临时挂载点2. 挂载新硬…...

思尔芯携手Andes晶心科技,加速先进RISC-V 芯片开发

在RISC-V生态快速发展和应用场景不断拓展的背景下,芯片设计正面临前所未有的复杂度挑战。近日,RISC-V处理器核领先厂商Andes晶心科技与思尔芯(S2C)达成重要合作,其双核单集群AX45MPV处理器已在思尔芯最新一代原型验证系…...

kafka消息积压排查

kafka监控搭建:https://insights.blog.csdn.net/article/details/139129552?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7EPaidSort-1-139129552-blog-132216491.235%5Ev43%5Econtrol…...

drawio 开源免费的流程图绘制

开源地址 docker-compose 一键启动 #This compose file adds draw.io to your stack version: 3.5 services:drawio:image: jgraph/drawiocontainer_name: drawiorestart: unless-stoppedports:- 8081:8080- 8443:8443environment:PUBLIC_DNS: domainORGANISATION_UNIT: unitOR…...

YOLOv8 升级之路:主干网络嵌入 SCINet,优化黑暗环境目标检测

文章目录 引言1. 低照度图像检测的挑战1.1 低照度环境对目标检测的影响1.2 传统解决方案的局限性 2. SCINet网络原理2.1 SCINet核心思想2.2 网络架构 3. YOLOv8与SCINet的集成方案3.1 总体架构设计3.2 关键集成代码3.3 训练策略 4. 实验结果与分析4.1 实验设置4.2 性能对比4.3 …...

传输层:udp与tcp协议

目录 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 netstat pidof 如何学习下三层协议 UDP协议 UDP协议端格式 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 TCP协议 TCP协议段格式 1.源端口号…...

centos7.9源码安装zabbix7.12,求赞

centos7.9源码安装zabbix7.12-全网独有 3.CentOS7_Zabbix7.0LTS3.1.安装环境3.2.换成阿里源3.3.安装相关依赖包3.3.1.直接安装依赖3.3.2.编译安装-遇到问题01-net-snmp3.3.3.编译安装-遇到问题02-libevent3.3.4.编译安装-遇到问题03-安装openssl 3.4.创建用户和组3.5.下载上传源…...

亚远景科技助力东风日产通过ASPICE CL2评估

热烈祝贺东风日产通过ASPICE CL2评估 近日,东风日产PK1B VCM热管理项目成功通过ASPICE CL2级能力评估,标志着东风日产在汽车电子软件研发管理体系及技术创新能力上已达到国际领先水平,为其全球化布局注入强劲动能。 ASPICE:国际竞…...

Go语言进阶④:Go的数据结构和Java的有啥不一样

Go语言进阶④:数据结构大冒险! ——写惯了 Java 的你,看 Go 的容器世界会头皮发麻吗? 一、写在前面:Java 程序员的容器情怀 在 Java 世界,你可能习惯了满手的 ArrayList、HashMap、Set、Queue 等容器类,配合着各种范型、接口和 Lambda 表达式,写得风生水起。 可一到…...

基于JWT+SpringSecurity整合一个单点认证授权机制

基于 JWT Spring Security 的授权认证机制,在整体架构设计上体现了高度的安全性与灵活性。其在整合框架中的应用,充分展示了模块化、可扩展性和高效鉴权的设计理念,为开发者提供了一种值得借鉴的安全架构模式。 1.SpringSecurity概念理解 …...

IDEA 打开文件乱码

问题:文件乱码 底部编码无法切换 解决方案: 第一步 使用Nodepad 查询文件编码 本项目设置为 转为 UTF-8 无 BOM 第二步:在 IntelliJ IDEA 中:右键点击文件 → File Encoding → 选择目标编码(如 UTF-8) 最…...

第2章:Neo4j安装与配置

在了解了Neo4j的基本概念和优势之后,下一步就是将其安装并配置好,以便开始实际操作。本章将详细介绍Neo4j的各种部署方式,涵盖不同操作系统的安装步骤,深入探讨关键配置项,并介绍常用的管理工具,为读者顺利…...

Shell 命令及运行原理 + 权限的概念(7)

文章目录 Shell 命令以及运行原理(4-1.22.08)Linux权限的概念1. 什么是权限2. 认识人(普通用户,root用户)以及两种用户的切换认识普通用户和root用户两种用户之间的切换指令提权 3. 文件的属性解析 权限属性指令ll显示…...

抽奖系统核心——抽奖管理

目录 前端逻辑: 核心全局变量: reloadConf函数: nextStep函数: 后端实现: 抽奖接口: Controller层: Service层: MqReceiver: drawPrizeService: statusConvert()方法: activityStatu…...

Android 蓝牙通信

Android 平台提供了完整的蓝牙 API,支持 传统蓝牙(Bluetooth Classic)和低功耗蓝牙(BBluetooth Low Energy, BLE)两种通信方式。 以下是开发蓝牙应用的关键知识点。 1. 基本概念 传统蓝牙(Bluetooth Classic) 适合大流量数据传输(如音频、文件传输) 典型协议: R…...

任务调度器-关于中心化调度 vs 去中心化调度的核心区别

1. 定义与架构模型 维度中心化调度去中心化调度核心角色存在一个中央调度器(如XXL-JOB的调度中心),统一管理任务分配、状态监控和故障处理。无中心节点,调度逻辑分散在多个节点,通过共识算法(如选举机制&a…...

二、【ESP32开发全栈指南:ESP32 GPIO深度使用】

GPIO(通用输入输出) 是ESP32最基础却最核心的功能。本文将带你深入ESP32的GPIO操作,通过按键读取和LED控制实现物理按键→ESP32→LED的完整信号链路。 一、ESP32 GPIO核心特性速览 34个可编程GPIO(部分引脚受限)输入模…...

力扣刷题(第四十九天)

灵感来源 - 保持更新,努力学习 - python脚本学习 反转链表 解题思路 迭代法:通过遍历链表,逐个改变节点的指针方向。具体步骤如下: 使用三个指针:prev(初始为None)、curr(初始为…...

机器学习:集成学习概念和分类、随机森林、Adaboost、GBDT

本文目录: 一、集成学习概念**核心思想:** 二、集成学习分类(一)Bagging集成(二)Boosting集成(三)两种集成方法对比 三、随机森林(一)构造过程(二…...

基于J2EE架构的在线考试系统设计与实现【源码+文档】

目录 摘要: Abstract: 1 引言 2 在线考试系统构架 2.1 在线考试系统一般需求分析 2.2 当前在线考试系统现状分析 2.3 基于J2EE的在线考试系统架构介绍及拥有的优势 2.3.1 结构总体介绍 2.3.2 客户层组件 2.3.2.1 Applets 2.3.2.2 应用程序客户端 2.3.3 …...

tpc udp http

TCP(传输控制协议)、UDP(用户数据报协议)和 HTTP(超文本传输协议)是网络通信中常用的三种协议,它们在不同的层次和场景中发挥作用。以下是对这三种协议的详细解释以及它们之间的区别&#xff1a…...

联想拯救者R9000P 网卡 Realtek 8852CE Ubuntu/Mint linux 系统睡眠后,无线网卡失效

联想拯救者R9000P 网卡型号 Realtek PCle GbE Family Controller Realtek 8852CE WiFi 6E PCI-E NIC 系统版本 Ubuntu 24.04 / mint 22.1 问题现象 rtw89_8852ce,Link is Down,xtal si not ready,mac init fail,xtal si not …...

Python训练营打卡 Day46

道注意力(SE注意力) 知识点回顾: 不同CNN层的特征图:不同通道的特征图什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。通道注意力:模型的定义和插入的位置通道注意力后…...

解决微软应用商店 (Microsoft store) 打不开,无网络连接的问题!

很多小伙伴都会遇见微软应用商店 (Microsoft store)打开后出现无网络的问题,一般出现这种问题基本都是因为你的电脑安装了某些银行的网银工具,因为网银工具为了安全会关闭Internet 选项中的最新版本的TLS协议,而微软商店又需要最新的TLS协议才…...

《影像引导下骨盆创伤手术的术前骨折复位规划:基于学习的综合流程》|文献速递-深度学习医疗AI最新文献

Title 题目 Preoperative fracture reduction planning for image-guided pelvic trauma surgery: A comprehensive pipeline with learning 《影像引导下骨盆创伤手术的术前骨折复位规划:基于学习的综合流程》 01 文献速递介绍 《影像引导下骨盆创伤手术的术前…...

如何使用Webhook触发器,在 ONLYOFFICE 协作空间构建智能工作流

在数字化办公中,ONLYOFFICE 协作空间作为一款功能强大的文档协作平台,提供了丰富的自动化功能。对于开发者而言,Webhook 触发器是实现业务流程自动化与系统集成的关键工具。本文将深入探讨如何在 ONLYOFFICE 协作空间中高效利用 Webhook&…...

跟我学c++中级篇——理解类型推导和C++不同版本的支持

一、类型推导 在前面反复分析过类型推导(包括前面提到的类模板参数推导CTAD),类型推导其实就是满足C语言这种强类型语言的要求即编译期必须确定对象的数据类型。换一句话说,理论上如果编译器中能够自动推导所有的相关数据类型&am…...

什么是DevOps智能平台的核心功能?

在数字化转型的浪潮中,DevOps智能平台已成为企业提升研发效能、加速产品迭代的核心工具。然而,许多人对“DevOps智能平台”的理解仍停留在“自动化工具链”的表层概念。今天,我们从一个真实场景切入:假设你是某互联网公司的技术负…...

Windows账户管理,修改密码,创建帐户...(无需密码)

前言 我们使用wWindows操作系统时,账户是非常重要的概念 它不仅能够帮助我们区分文档主题权限等等 嗯还有最重要的解锁电脑的作用! 但想要管理他,不仅需要原本的密码,而且设置中的管理项也非常的不全。 Windows有一款netplwi…...