find命令常见用法

news/2024/2/25 12:54:06/文章来源:https://blog.csdn.net/qq_41566366/article/details/135645880

man find

运算符及优先级

运算符 按照优先级从高到低列出:

   ( expr )
          强制优先级。由于括号对于shell来说是特殊的,你通常需要给它们加引号。这个手册页中的许多例子都用反斜杠来达到这个目的:`\(...\)' 而不是 `(...)'。

   ! expr 如果expr为假,那么为真。这个字符也通常需要保护,以免被shell解释。

   -not expr
          和 ! expr 一样,但不符合POSIX标准。

   expr1 expr2
          两个表达式连在一起,相当于用一个隐含的"-a"连接;如果expr1为假,那么expr2不会被评估。

   expr1 -a expr2
          和 expr1 expr2 一样。

   expr1 -and expr2
          和 expr1 expr2 一样,但不符合POSIX标准。

   expr1 -o expr2
          或;如果expr1为真,那么expr2不会被评估。

   expr1 -or expr2
          和 expr1 -o expr2 一样,但不符合POSIX标准。

   expr1 , expr2
          列表;expr1和expr2都会被评估。expr1的值会被丢弃;列表的值是expr2的值。逗号运算符可以用来搜索几种不同的东西,但只遍历一次文件系统层次结构。-fprintf操作可以用来把各种匹配的项列出到不同的输出文件中。

   请注意,当-a隐含地(例如两个测试之间没有明确的运算符)或显式地指定时,它的优先级高于-o。这意味着 find . -name afile -o -name bfile -print 永远不会打印出 afile。
 

find使用示例 

使用find查询大文件及其大小,同时排除指定目录

某个ubuntu服务器,有多个/fwork目录,如果要查询根目录/下的大文件,那么就必须排出这些目录 

 df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             63G   24G   39G  39% /dev
tmpfs            13G   21M   13G   1% /run
/dev/sdi2        93G   83G  5.8G  94% /
tmpfs            63G     0   63G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            63G     0   63G   0% /sys/fs/cgroup
/dev/sdi1       511M  3.6M  508M   1% /boot/efi
/fwork14        2.0T  1.7T  217G  89% /fwork14
/fwork1         2.0T  1.9T   13G 100% /fwork1
/fwork2        2.0T  1.1T  883G  54% /fwork2
/fwork3         2.0T  157G  1.8T   9% /fwork3
/fwork4         2.0T  1.8T   73G  97% /fwork4
...

这个时候,我们可以使用下面的命令,排出我们不希望的目录,同时,输出希望查询出的文件及其大小

sudo find / -path "/fwork*" -prune  -o -type f -size +1000M  -exec ls -lh {} \;

对上上面的命令,可能会有点懵,没关系,我们只需要关注下面两点

-prune,禁止进入目录

-prune: 如果是一个目录,不要进入它,不再搜索它们的子目录或文件。

比如,如果想在当前目录下查询除了dir以外的其他目录,可以这样写

find . -name dir -prune -o -print

这里,-name dir -prune是一个操作,它会让find忽略以dir目录,但是仍然会打印出它们的名字。为了避免这种情况,你需要用-o(逻辑或)把它和另一个操作分开,比如-print。这样,只有不符合-prune条件的文件才会被打印出来。

-o,表达式的or条件

-o:标识是or的意思,两边可以有两个判断条件,expression1 和 expression2 。如果expression1为真,那么expression2不会被评估。如果expression1为假,那么expression2会被评估。只要expression1或expression2中有一个为真,那么整个表达式就为真。

比如下面的命令只会显示bfile

find . -name afile -o -name bfile -print 

这是因为这实际上相当于

find . -name afile -o \( -name bfile -a -print \)

请记住,-a 的优先级高于 -o,当没有在测试之间指定运算符时,-a 是默认的。那么此时"-print"只会和“-name bfile”发生作用,而不会和“-name afile”发生作用

在没有明确指定优先级的情况下,-print动作默认只应用于前面最近的表达式

如果要同时显示两个文件,请使用

find . \( -name 1_add_users.sh -o -name 2_system_info.sh \) -print

正是鉴于-a和-o之间优先级的这种特点,我们才可以利用他们来查询大文件同时排除指定目录,我们上面使用find查询大文件并排出某些目录的表达式的执行逻辑是:

执行 -path "/fwork*" -prune  表达式为真时不做任何操作,而执行 -type f -size +1000M  时将查询出来的文件再执行 -exec ls -lh {} \; 

如果我们将两个表达式括起来,那么将会打印出我们希望排除的目录名

sudo find / \( -path "/fwork*" -prune  -o -type f -size +1000M \) -print

常见错误

错误:如果报错 find: paths must precede expression:xxx   路径必须在表达式之前:xxx

执行下面这个命令会报错find: paths must precede expression:xxx,

find . -name *.c -print

实际上这是因为*.c会被 shell 扩展,导致 find 实际上收到了这样的命令行:  

 find . -name frcode.c locate.c word_io.c -print

如果要用通配符匹配,可以使用下面的方式

find . -name '*.c' -print
find . -name \*.c -print

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

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

相关文章

网页屏幕适配通透了

一,如果设计尺寸固定 那就按照固定尺寸开发 一般都是1920*1080 二,需要适配多种像素屏幕(大屏可视化) 可使用媒体查询设置多套css样式或者使用自适应单位,%,vw,vh 最好解决方案rem&#xff…

Unity Shader 的模板测试效果

模板测试是渲染管线中逐片元操作的一环,它的作用是筛选出指定模板的片元,而不符合模板的片元会被舍弃,从而做到一个遮罩的效果。 以下是Unity中实践的一个效果: 场景中可以看出,熊模型和茶壶模型都在差不多的位置&am…

Kafka 的架构

实验过程 1.三个虚拟机中解压kafka软件包 tar -zxvf kafka_2.11-1.1.1.tgz 2.修改 3 个节点配置文件 在 zookeeper 节点,进入 kafka_2.11-1.1.1/config 目录下,编辑 server.properties 文件 [rootdb1 ~]# cd kafka_2.11-1.1.1/config [rootdb1 con…

HarmonyOS应用开发者高级认证试题库(鸿蒙)

目录 考试链接: 流程: 选择: 判断 单选 多选 考试链接: 华为开发者学堂华为开发者学堂https://developer.huawei.com/consumer/cn/training/dev-certification/a617e0d3bc144624864a04edb951f6c4 流程: 先进行…

【一】通信协议概述

通信协议概述 简介: 很早之前就思考了要写一下电力系统常用的几种通信协议,一直拖着也没有行动,这次终于下定决心来出一个《通信协议》这样的专栏。电力行业数字化方面资料较少,我理解主要一方面是数字化程度还不高,一…

使用Python操纵Word自动编写离职报告

目录 一、背景介绍 二、技术原理 三、实现步骤 1、安装python-docx库 2、创建Word文档 3、添加标题和内容 4、添加表格和图片 5、设置样式和格式化文本 6、保存文档 四、注意事项与建议 总结 随着现代社会的发展,自动化和智能化已经成为各行各业追求的目…

使用PyTorch实现混合专家(MoE)模型

Mixtral 8x7B 的推出在开放 AI 领域引发了广泛关注,特别是混合专家(Mixture-of-Experts:MoEs)这一概念被大家所认知。混合专家(MoE)概念是协作智能的象征,体现了“整体大于部分之和”的说法。MoE模型汇集了各种专家模型…

消息的发送与接收

消息的发送与接收 消息的发送与接收不仅仅是在于聊天功能的实现。其实还有很多种情况也算"消息的发送与接收"。而且我们还可以通过多种方法去实现。我们可以基于实际情况来选择。 WebSocket实现 node做后端。找了好多,前端页面总是用到了jQuery&#x…

(C语言)冒泡排序

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现buble_sort函数&#xff1b; void buble_sort(int arr[], int sz) {//初始化变量值&#xff1b;int i 0;//嵌套循环冒泡排序&#xff1b;//外层循环&…

【REST2SQL】10 REST2SQL操作指南

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

微信小程序-----全局配置与页面配置

目录 前言 全局配置文件 一、window 1. 小程序窗口的组成部分 2. window 节点常用的配置项 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 8. 设置下拉刷新时 loading 的样式 9. 设置…

两步解决宝塔面板无法访问(无法访问或拒绝链接)

宝塔面板&#xff0c;突然无法进入&#xff0c;显示“IP拒绝链接”。 使用SSH工具登录服务器 /etc/init.d/bt defaultbt default 命令 宝塔获取登录的默认地址、用户名和登录密码&#xff1b; 重启面板服务 sudo /etc/init.d/bt初始化宝塔选项 漏刻有时

装饰者模式:打破继承限制,实现灵活的功能扩展

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 装饰者模式&#xff1a;打破继承限制&#xff0c;实现灵活的功能扩展 前言装饰者模式简介装饰者模式的工作原理实际应用java代码实现结语 前言 在软件开发中&#xff0c;我们经常面临着需求的变化和新…

rsync全面讲解

rsync 是一个常用的 Linux 应用程序&#xff0c;用于文件同步。 它可以在本地计算机与远程计算机之间&#xff0c;或者两个本地目录之间同步文件&#xff08;但不支持两台远程计算机之间的同步&#xff09;。它也可以当作文件复制工具&#xff0c;替代cp和mv命令。 它名称里面…

基础面试题整理4

1.mybatis的#{}和${}区别 #{}是预编译处理&#xff0c;${}是字符串替换#{}可以防止SQL注入&#xff0c;提高安全性 2.mybatis隔离级别 读未提交 READ UNCOMMITED&#xff1a;读到了其他事务中未提交的数据&#xff0c;造成"脏读","不可重复读","幻读&…

Python进程池multiprocessing.Pool

环境&#xff1a; 鲲鹏920:192核心 内存&#xff1a;756G python&#xff1a;3.9 python单进程的耗时 在做单纯的cpu计算的场景&#xff0c;使用单进程核多进程的耗时做如下测试&#xff1a; 单进程情况下cpu的占用了如下&#xff0c;占用一半的核心数&#xff1a; 每一步…

git 提炼笔记

1、设置用户名和邮箱&#xff08;邮箱可以不是真的&#xff09; git config --global user.name test101 // 设置用户名为 test101git config --global user.email test101test101.cn // 设置邮箱为test101test101.cn2、查看用户名和邮箱 git config --global user.name git…

【SpringBoot框架篇】35.kafka环境搭建和收发消息

kafka环境搭建 kafka依赖java环境,如果没有则需要安装jdk yum install java-1.8.0-openjdk* -y1.下载安装kafka kafka3.0版本后默认自带了zookeeper&#xff0c;3.0之前的版本需要单独再安装zookeeper,我使用的最新的3.6.1版本。 cd /usr/local wget https://dlcdn.apache.…

Redis主从架构、哨兵集群原理实战

1.主从架构简介 背景 单机部署简单&#xff0c;但是可靠性低&#xff0c;且不能很好利用CPU多核处理能力生产环境必须要保证高可用&#xff0c;一般不可能单机部署读写分离是可用性要求不高、性能要求较高、数据规模小的情况 目标 读写分离&#xff0c;扩展主节点的读能力&…

canvas绘制美队盾牌

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…