linux命令之查找find整理、逻辑操作

linux命令之查找find整理及逻辑操作

find 是 Linux 系统中用于在目录树中查找文件或目录。它可以根据文件名、文件类型、大小、访问和修改时间等多种条件来查找文件。下面我将详细介绍 -name、-type、-size、maxdepth、-exec、-okxargs 这些参数。

一、 find 命令的基本语法格式如下:

bash

find [路径] [表达式]
find [路径] [-参数1 实参1 -参数2 实参2]

其中:

[路径]:指定 find 命令开始搜索的目录路径。如果省略,默认为当前目录(.)。
[表达式]:由选项(如 -name, -type, -size 等)和参数构成的搜索条件。多个表达式可以通过逻辑操作符(如 -and, -or, -not 或简写形式 !, -a, -o)组合起来。

1. -name

-name 参数允许你根据文件名来查找文件。你可以使用通配符 * 来匹配任意字符序列,? 来匹配任意单个字符。

示例:查找当前目录及其子目录中所有以 .txt 结尾的文件:

bash

find . -name "*.txt"

2. -type

-type 参数允许你根据文件类型来查找文件。常见的文件类型包括:

f:普通文件
d:目录
l:符号链接
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
示例:查找当前目录及其子目录中所有的目录:

bash

find . -type d

3. -size

-size 参数允许你根据文件大小来查找文件。大小可以以字节、千字节、兆字节等为单位指定。

示例:查找当前目录及其子目录中所有大于 1M 的文件:

bash

find . -size +1M

注意:+ 表示大于,- 表示小于,如果不加符号则表示等于。

4. maxdepth

maxdepth 参数限制 find 命令搜索的目录深度。这可以显著提高查找效率,特别是在大型文件系统中。

示例:在当前目录及其直接子目录中查找所有的 .txt 文件(不搜索孙子目录等):

bash

find . -maxdepth 1 -name "*.txt"

5. -exec

-exec 参数允许你对找到的每个文件再执行指定的 shell 命令。命令需要以 ; 结尾,并且在某些系统中,为了安全起见,你可能需要在 ; 的前面加上 {} \ 来转义。

示例:查找当前目录及其子目录中所有的 .txt 文件,并删掉它们:

bash

find . -name "*.txt" -exec rm {} \;

这里的 {} 是一个占位符,代表 find 命令找到的每个文件。

6. -ok

-ok 参数与 -exec 类似,但在执行命令之前,它会为每个文件询问用户的确认。这可以防止因误操作而删或修改重要文件。

示例:查找当前目录及其子目录中所有的 .txt 文件,并在删除前询问确认:

bash

find . -name "*.txt" -ok rm {} \;

7. xargs

xargs 不是一个 find 命令的参数,而是一个独立的命令行工具,经常与 find 命令结合使用。find 命令的输出可以传递给 xargs,然后 xargs 会将输出作为参数传递给另一个命令。这在处理大量文件时特别有用,因为它可以避免命令行参数过长的问题。

示例:查找当前目录及其子目录中所有的 .txt 文件,并使用 cat 命令将它们的内容合并到一个文件中:

bash

find . -name "*.txt" -print0 | xargs -0 cat > merged.txt

这里 -print0 和 -0 是为了处理文件名中的特殊字符(如空格、换行等)。

二、逻辑连接

多个表达式可以通过逻辑操作符组合起来,意味着你可以使用逻辑操作符来连接不同的 find 命令选项和条件,从而构建出更复杂的搜索表达式。这些逻辑操作符允许你指定文件或目录必须满足(-and 或 -a)、只需满足(-or 或 -o)或不满足(-not 或 !)某一组条件。

这里有一些示例来帮助理解这个概念:

1、使用 -and 或 -a(逻辑与)(不添加操作符默认为and

查找当前目录及其子目录中所有以 .txt 结尾且修改时间在最近7天内的文件:

bash

find . -name "*.txt" -and -mtime -7  

也可为:

find . -name "*.txt" -a -mtime -7

因为默认就是与操作,可直接排列表达式,也可简写为

find . -name "*.txt" -a -mtime -7

在这个例子中,文件必须同时满足 -name “*.txt” 和 -mtime -7 这两个条件。

2、使用 -or 或 -o(逻辑或)

查找当前目录及其子目录中所有以 .txt 结尾或者以 .log 结尾的文件:

bash

find . -name "*.txt" -or -name "*.log"  

或者简写为

find . -name "*.txt" -o -name "*.log"

在这个例子中,文件只需满足其中一个 -name 条件即可。

3、使用 -not 或 !(逻辑非)

查找当前目录及其子目录中所有不是目录的文件:

find . ! -type d  

或者使用 -not

find . -not -type d

在这个例子中,find 命令会排除所有类型为目录的文件。

你也可以再组合这些逻辑操作符来构建更复杂的表达式。例如,查找当前目录及其子目录中所有以 .txt 结尾但不是目录的文件,并且这些文件的修改时间在最近7天内:

bash

find . -name "*.txt" -and ! -type d -and -mtime -7  

或者简写为

find . -name "*.txt" -a ! -type d -a -mtime -7

在这个复杂的例子中,文件必须同时满足三个条件:文件名以 .txt 结尾、不是目录、且修改时间在最近7天内。

通过组合这些逻辑操作符,你可以创建出几乎任何你需要的复杂搜索条件。

总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 四层和七层代理区别、配置

四层:通过报文中的目标地址和端口,加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器,使用tcp、udp协议。 七层:"内容交换",通过报文中真正有意义的应用层内容,加上负…

【vue,unapi】UniApp引入全局js实现全局方法,全局变量

创建一个全局文件utils.js export const baseUrl "https://www.baidu.com/"export const fn () > {console.log("demo"); } export const obj {baseUrl : "https://www.baidu.com/",demo(){console.log("demo2");} }第一种&#…

基于opencv的单目相机标定

openCv版本:4.4.0 从源码处拷贝标定代码出来使用,需要拷贝samples/cpp/tutorial_code/calib3d/camera_calibration 需要的文件如下: -rw-rw-r-- 1 rog rog 28490 Jul 18 2020 camera_calibration.cpp -rw-rw-r-- 1 rog rog 3152 Jul 18 …

LearnOpenGL(五)之变换

一、缩放(Scaling) 把缩放变量表示为 (S1,S2,S3), 将任意向量 (x,y,z) 定义一个缩放矩阵,缩放公式: 二、位移 和缩放矩阵一样,在44矩阵上有几个特别的位置用来执行特定的操作,对于位移来说它们…

通过matlab对比遗传算法优化前后染色体的变化情况

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 通过matlab对比遗传算法优化前后染色体的变化情况. 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 3.核心程序 ....................................…

JVM(Java虚拟机)练习题目大全

1、什么是Java虚拟机(JVM)?它的作用是什么? Java虚拟机是Java平台的关键组件之一,它是一个能够执行Java字节码的虚拟计算机。其作用是提供一个跨平台的运行环境,使得Java程序可以在不同的操作系统上运行&a…

javaEE初阶——多线程(九)——JUC常见的类以及线程安全的集合类

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程专题的最后一篇文章:关于JUC常见的类以及线程安全的集合类 如果有不足的或者错误的请您指出! 目录 3.JUC(java.util.concurrent)常见的类3.1Callable接口3.2 RentrantLoc…

5月计算机各省报名时间汇总报名流程

📣5月有5省可进行计算机报名 天津:5月6日-5月10日 福建:5月6日9:00-5月12日17:00 广西:5月6日9:00-5月12日23:55 重庆:5月6日9:00-5月12日24:00 西藏:预计5月6日-12日 🔍计算机等级考试报…

【智能算法应用】灰狼算法(GWO)在低照度图像增强中的应用

目录 1.算法原理2.数学模型3.结果展示4.参考文献 1.算法原理 【智能算法】灰狼算法(GWO)原理及实现 2.数学模型 对于低照度图像的增强方式可以采用非线性变换函数来对图像的灰度值进行变化,对于不同环境下质量不同的图像,可以将…

Flink 实时数仓(一)【实时数仓离线数仓对比】

前言 昨天技术面的时候,面试官说人家公司现在用的都是最新的技术,比如 Doris 等一些最新的工具,确实这些课是学校永远不会开设的,好在他说去了会带着我做一做。可是 ...... 学院舍不得让走啊 ...... 没办法,情况就是这…

LVGL基础到进阶

GUI 简介 图形用户界面, 是指代采用图形方式现实的计算机操作用户界面 GUI库: 图形用户界面库,只需调用GUI库的函数就看也i快速绘制出所需要的用户界面 优势: 开发难度低可移植性风格统一、协调 常见GUI库 emVinLVGLtouchGF…

传统行业还在使用FTP传输?试试这套FTP替代传输解决方案!

在数字化转型的浪潮中,传统企业对文件传输的需求日益增长。然而,许多企业仍在使用传统的文件传输协议(FTP)来处理文件传输任务。尽管FTP在早期被广泛采用,但其固有的弊端逐渐成为企业发展的桎梏,所以找一个…

如何从requirements.txt文件中安装pytorch

平时使用requirements.txt文件来安装python的依赖,如下所示: Flask3.0.0 Flask-Cors4.0.0 elastic-transport8.11.0 elasticsearch8.11.1但是如果我们的依赖中包含pytorch依赖,显然是不能简单的通过这个方式来进行的,例如&#x…

VXWorks6.9 + Workbench3.3 Simulation 编译静态库项目搭建和编译

VxWorks系列传送门 一、 创建一个static keneral Library项目 二、添加带编译的文件 浅写两个接口如下: /** testlib.h** Created on: 2024-4-25* Author: Administrator*//** Description:*/

安装 Nginx 的三种方式

通过 Nginx 源码安装需要提前准备的内容: GCC 编译器 Nginx 是使用 C 语言编写的程序,因此想要运行 Nginx 就需要安装一个编译工具 GCC 就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了 C 语言 使用命令 yum i…

4.8 海思SS928开发 - uboot开发 - 自定义启动以及分区方案验证

4.8 uboot开发 - 自定义启动以及分区方案验证 上文中自定义了分区方案以及启动方案。但还没有验证过能不能用,这里验证一下。 制作镜像 步骤如下: cd ~/hiss928/uboot/ss928_uboot_v2020.1/ source ~/hiss928/sdk/ss928_sdk_g7.3_k4.19/env_setup.sh .…

IntelliJ IDEA - 10 款 IDEA 宝贝插件,YYDS!

好久没发这种实用贴了,最近用到了一些能提升工作效率的IDEA插件,给小伙伴们分享一下。相信我,我分享的这些插件,都是实实在在能解决实际开发场景中痛处的。 1、POJO to JSON 开发工作中,常常在设计完API后&#xff0c…

汽车驾驶3D模拟仿真展示系统更立体直观

随着新能源汽车的普及,它已成为现代生活中不可或缺的交通工具。并且国产车的崛起,其设计与零部件制造水平已能与合资车相媲美,因此汽车维修技能的学习变得尤为重要。汽车维修3D仿真教学软件应运而生,为广大学员提供了一个直观、高…

C语言 | Leetcode C语言题解之第47题全排列II

题目: 题解: int* vis;void backtrack(int* nums, int numSize, int** ans, int* ansSize, int idx, int* perm) {if (idx numSize) {int* tmp malloc(sizeof(int) * numSize);memcpy(tmp, perm, sizeof(int) * numSize);ans[(*ansSize)] tmp;return…

什么是重放攻击(Reply attack)?

什么是重放攻击(Reply attack)? 重放攻击,也称为回放攻击,是一种网络攻击方式。重放攻击是一种中间人攻击,攻击者通过截获合法的数据传输并重新发送它们来欺骗接收方,让接收方误以为是合法的消息。重放攻击是非常常见的&#xf…
最新文章