四剑客find及命令补充

news/2026/1/20 22:07:39/文章来源:https://www.cnblogs.com/gzjwo/p/19508901

四剑客find及命令补充

1. 四剑客-grep

  • 过滤:在文件中或管道中进行查找,找出想要的内容(字符串),
    默认按照行查找.
  • grep会把匹配到的行显示出来.

补充:四剑客 awk、sed、grep、find

1.1 概述与选项

grep 选项 说明
-n line-number 显示行号
-v 排除,取反
-i ignore-case 过滤的时候忽略大小写

1.2 案例与应用

1)基本用法

## 在/etc/passwd中过滤出包含root的行
grep '你要找的内容' /etc/passwd
grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin[root@oldboy-lnb-king-v3 ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
  • grep 也可以对接管道
过滤出叫crond的进程
ps -ef |grep 'crond'[root@oldboy-lnb-king-v3 ~]# ps -ef | grep crond
root      1013     1  0 11月29 ?      00:00:00 /usr/sbin/crond -n
root     63709 62724  0 09:07 pts/1    00:00:00 grep --color=auto crond

其他过滤案例:

  • /var/log/secure中过滤出包含Failed password的行
  • /var/log/secure中过滤出包含Failed password的行并统计次数

2)显示内容和行号

## 案例01 显示/etc/passwd中包含root的行及行号
grep -n 'root' /etc/passwd##在/etc/services中过滤出包含ssh的行并显示行号
[root@oldboy83-prod oldboy]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

3)过滤的时候不区分大小写

过滤的时候不清楚内容是大写还是小写。
## 案例 02 过滤出secure文件中failed password的行不区分大小写
grep -i 'failed password' /var/log/secure[root@oldboy83-prod oldboy]# grep -i 'failed password' /var/log/secure
20 15:31:46 oldboy83-prod sshd[17003]: Failed password for root from 10.0.0.1 port 53920 ssh2
20 15:31:46 oldboy83-prod sshd[17003]: Failed password for root from 10.0.0.1 port 53920 ssh2

温馨提示:如果没有Failed password的日志,可以使用ssh root@10.0.0.200进行连接测试,输错密码即可生成相关日志。

4)排除

查找的时候,不知道具体要什么,但是知道不想要什么?

这时候需要使用grep命令的排除选项,过滤出不包含xxx内容的行。

## 案例 03 排除/etc/passwd中的nologin的行
grep -v 'nologin' /etc/passwd

2. 四剑客-find

四剑客四号选择,擅长查找文件。在指定的目录中查找你要的文件,文件名。

2.1 概述与选项

  • find 在指定目录中查找文件
find 命令选项 说明
-type 什么类型的文件 f 表示文件 d 表示目录
-name 文件名
-size 根据大小查找文件 + 表示大于, - 表示小于 +10k (小写 K) +10M (大写) G
-mtime 根据修改时间查找文件

2.2 基础案例

find 目录 指定类型 指定名字

1)案例01-02 精确查找与模糊查找

#案例01 在/etc/目录中找出文件名叫hostname文件 ,精确查找,指定文件名。
find /etc/   -type f   -name 'hostname' /etc/hostname#案例02 找出/etc/下面以.conf结尾的文件
a.conf b.conf c.conf  lidao.conf  xxxx.conf
find /etc/ -type f -name '*.conf'## 温馨提示:如果想找以xxx开头或包含xxx的文件
找以oldboy开头的文件: -name 'oldboy*'
找包含oldboy的文件:(可能是开头,可能是结尾,可能是中间):-name '*oldboy*'##可以让find+grep就行(可能是开头,可能是结尾,可能是中间,路径中包含):
find / -type f |grep 'oldboy'

2)案例03 根据大小查找

-size选项, size大小的意思.根据大小查找文件
大于 -size +10k 大于10k文件
小于 -size -10k 小于10k文件#案例03  根据大小找出文件 在/etc/目录下面找出大于10kb的文件
find /etc/  /tmp/  -type f -size  +10k

3)案例04 根据时间查找

一般是根据文件的修改时间进行查找.
未来主要用于查找系统日志文件,旧的日志文件。7天之前的文件。

-mtime选项:
• +7表示 找出7天之前的文件(修改时间是7天之前)
• -7表示 最近7天内的文件

#案例04  根据修改时间找出文件
根据相对的时间进行查找,比如
修改时间最近7天的文件
修改时间是大于30天#找出/etc/目录下以.conf结尾的,7天之前的文件。
find /etc/ -type f -name "*.conf" -mtime +7find /oldboy/ -type f -mtime -7 #最近7天(包含第 7 天)
find /oldboy/ -type f -mtime +7 #7天之前的(不包含第 7 天)

4)案例05 综合案例

#案例05 找出/etc/中以.conf结尾大于10kb修改时间是7天之前的文件
find /etc/ -type f -name '*.conf' -size +10k -mtime +7
/etc/lvm/lvm.conf[root@oldboy83-prod ~]# ls -lh  /etc/lvm/lvm.conf
-rw-r--r--. 1 root root 94K 10月  1 2020 /etc/lvm/lvm.conf

5)案例06-07: 进阶选项

#案例06  查找文件的时候指定最多找多少层目录.
find / -maxdepth 2  -type f -name "*.conf"
-maxdepth 1 选项位置第1个,指定find命令查找的最大深度(层数),不加上就是所有层。#案例07  查找的时候不区分文件名的大小写
find /    -type f -iname "*.conf"
#ignore  casefind还可以根据用户名查找,查找属于某个用户的文件。
find还可以根据权限查找。

2.3 find命令与其他命令配合(难点)

  • 案例:
    • 核心:find+简单命令:find找出想要的文件删除,看详细信息, 显示文件内容, 过滤。
    • find+打包压缩: find找出文件进行打包压缩
    • find+cp/mv:find找出文件后复制或移动
环境准备
mkdir -p /oldboy/find
touch /oldboy/find/lidao{01..10}.txt
cd

1)案例08-找出 /oldboy/find/ 以 .txt 结尾的文件显示详细信息

这里主要用到find+ls配合, 后面的其他配合find+rm,find+cat/head/tail/, find+grep都类似。
find不要与交互式命令配合find+vi/vim ❌

  • 方法01 find
find与其他命令配合必会方法 find + 反引号+其他命令ls -lh find命令的结果
ls -lh `find /oldboy/find/  -type f  -name '*.txt'`
ls -lh $(find /oldboy/find/  -type f  -name '*.txt')
#先运行find命令找出文件, 然后运行ls显示文件详细信息。
  • 方法02 find |xargs
find /oldboy/find/  -type f -name '*.txt' | ls -lh
##执行失败:管道传递的是字符串
##管道 | 的作用是把前一个命令的标准输出(字符串)传递给后一个命令的标准输入。但 ls 命令是通过命令行参数来接收文件路径的,它不会读取标准输入里的字符串,因此 find 输出的文件路径会被直接忽略。##如何解决:
##通过|xargs把前面命令传递过来的 字符串 转换为 后面命令可以识别的 参数.
find /oldboy/find/  -type f -name '*.txt' |xargs ls -lh

注:温馨提示: |xargs后面无法使用 ll,

xargs 默认会调用系统原生的命令(如 /bin/ls),而不是你在 Shell 中定义的别名(比如你把 ll 设为 ls -l 的别名)。

因此,直接写 ... | xargs ll 会报错,因为 xargs 找不到名为 ll 的系统命令。

#如果想在 xargs 中使用别名,需要显式调用 Shell 来解析:
# 正确写法
find /oldboy/find/ -type f -name '*.txt' | xargs bash -c 'll "$@"' _# 推荐写法
find /oldboy/find/ -type f -name '*.txt' | xargs ls -l
  • 方法03 find + -exec 方法
find /oldboy/find/  -type f -name '*.txt'  -exec ls -lh {} \;
-exec是find选项,表示find找出文件后要执行的命令
{} 表示前面find命令找出的文件.
\;表示命令结束,固定格式.

2)案例09-find与打包压缩

  • find找出 /oldboy/find/ 以.txt结尾的文件放在 /tmp/find.tar.gz
#方法01 - find ``
tar zcf /tmp/find.tar.gz `find /oldboy/find/ -type f -name '*.txt'`#方法02 find + |xargs
find /oldboy/find/ -type f -name '*.txt'|xargs tar zcf /tmp/etc-xargs.tar.gz#方法03 find + exec
find /oldboy/find/ -type f -name '*.txt' -exec tar zcf /tmp/find-exec.tar.gz {} \;
#有坑,因为-exec \:找到一个文件,就执行一次压缩的命令#-exec {} + :把所有找到的文件一次性传给后面的命令,只执行一次 tar
find /oldboy/find/ -type f -name '*.txt' -exec tar zcf /tmp/find-exec.tar.gz {} +##注意:-exec 命令 {} \; ,必须加 \;(分号需要转义)
##-exec 命令 {} + , 不加 ;

3)案例10-find与复制或移动

  • find找出/oldboy/find/ 以.txt结尾的文件然后复制到/tmp下面
##方法01 find + ``
cp `find /oldboy/find/ -type f -name '*.txt'` /tmp/##方法02 find + |xargs
find xxx  |xargs cp  /tmp/
运行的时候
1. find找出文件 oldboy01 ... oldboy10
2. 把10个文件传输给cp命令
3. cp /tmp/ oldboy01 ... oldboy10 #报错 cp 源文件 目标目录,顺序反了
#xargs 的默认行为:把管道传来的参数(文件列表)加到命令最后。cp -t /tmp/ oldboy01 ... oldboy10
cp -t 目标  源文件
如何解决:
find /oldboy/find/ -type f -name '*.txt' | xargs cp -t /tmp/##方法03 find + -execfind /oldboy/find/ -type f -name '*.txt' -exec cp {} /tmp/ \;

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

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

相关文章

2025增长亮眼,2026 Akamai踏上AI落地新征程

作者:王聪彬最近几年,全球云计算市场可以用增长迅猛来形容。Precedence Research 预测,2025年全球云计算市场规模已达9127.7亿美元,预计到2034年将突破5.15万亿美元。人工智能需求的集中涌入,正在成为云计算增长的核心…

【计算机毕业设计案例】基于django的电子产品电商平台主数据管理系统基于django的电子产品电商平台主数据管理系统(程序+文档+讲解+定制)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

IEEE推出两项AI伦理认证计划助力可信人工智能发展

几乎每个组织都在计划使用人工智能来改善运营。尽管自主智能系统能够带来显著效益,但也可能被不当使用。该技术可以创建深度伪造内容,制作逼真的篡改图像和视频来传播错误信息和虚假信息。同时,基于有偏见数据训练的AI系统可能在招聘、放贷和…

全网最全专科生必备TOP8 AI论文写作软件测评

全网最全专科生必备TOP8 AI论文写作软件测评 2026年专科生必备AI论文写作软件测评:为何需要这份榜单? 随着人工智能技术的不断发展,越来越多的学术辅助工具涌现出来,为学生和研究人员提供了高效、便捷的写作支持。对于专科生而言&…

从iPhone 13 Pro Max升级到iPhone 17 Pro Max的5大感受

在朋友圈中以节俭著称,加上生活在iPhone价格全球最高的国家之一,这解释了我为什么使用iPhone 13 Pro Max这么长时间。但在假期期间,在纽约的一次快速旅行中,我终于下定决心进行了升级。我把这归咎于等待Apple Vision Pro演示时的闲…

【计算机毕业设计案例】基于python的台风灾情灾情数据可视化系统(程序+文档+讲解+定制)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

计算机大数据毕设实战-基于django大数据在直播带货商品选品中的应用【完整源码+LW+部署说明+演示视频,全bao一条龙等】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

大数据毕设项目推荐-基于django的线上电子产品销售平台电子产品电商平台主数据管理系统【附源码+文档,调试定制服务】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

【论文自动阅读】

快速了解部分 基础信息(英文): 1.题目: A Vision-Language-Action-Critic Model for Robotic Real-World Reinforcement Learning 2.时间: 2025.09 3.机构: Shanghai AI Lab 4.3个英文关键词: Vision-Language-Action (VLA), Real-World Rein…

房间大小的粒子加速器实现商业化应用

粒子加速器通常是巨大的结构——比如位于加利福尼亚州斯坦福的SLAC国家加速器实验室长达3.2公里。但科学家们一直在努力通过使用激光来执行加速过程,从而缩小这些加速器的体积。这些粒子加速器将只有一个房间大小,成本也会大大降低。现在,一家…

AI Agent在智能牙刷中的刷牙效果分析

AI Agent在智能牙刷中的刷牙效果分析 关键词:AI Agent、智能牙刷、刷牙效果分析、机器学习、传感器数据 摘要:本文深入探讨了AI Agent在智能牙刷中对刷牙效果进行分析的相关技术和应用。首先介绍了研究的背景、目的、预期读者以及文档结构等内容。接着详细阐述了AI Agent、智…

Agent数据大脑:七层智能体架构解析

以智能体为核心的数据应用架构:从被动管道到主动大脑的范式革命在数据技术飞速迭代的今天,我们正见证一场深刻的范式变迁。传统的数据架构,如以数据管道为核心的Lambda架构、数据仓库与数据湖,正逐渐显露出其局限性。它们更像一个…

SSM275的咖啡馆管理系统

目录SSM275咖啡馆管理系统摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM275咖啡馆管理系统摘要 SSM275咖啡馆管理系统是一款基于SSM框架(SpringSpring MVCMyBatis)开发的智能化管理平台&#x…

大数据毕设项目推荐-基于python的灾情数据可视化系统基于python大数据的自然灾害地震等数据可视化分析系统【附源码+文档,调试定制服务】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

Selenium Web 自动化测试脚本总结

Selenium Web 自动化测试脚本总结 Web 自动化的本质,是模拟人在浏览器里的操作行为:打开浏览器、访问页面、定位元素、输入/点击、做断言验证。Selenium 之所以常用,是因为它把这些动作抽象成了一套稳定的 API,再配合浏览器驱动&a…

SSM276抗疫医疗用品销售系统

目录SSM276抗疫医疗用品销售系统摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM276抗疫医疗用品销售系统摘要 抗疫医疗用品销售系统是基于SSM(SpringSpring MVCMyBatis)框架开发的B2C电子商务平…

Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别

Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别1)本质区别:它们“等的对象”不一样 隐式等待等的是:**元素查找(findElement / findElements)**这件…

大数据毕设项目推荐-基于django的直播带货商品数据分析可视化系统基于django大数据在直播带货商品选品中的应用【附源码+文档,调试定制服务】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

SSM277课程在线考试组卷管理系统vue

目录SSM277课程在线考试组卷管理系统Vue摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM277课程在线考试组卷管理系统Vue摘要 该系统基于SSM(SpringSpringMVCMyBatis)框架与Vue.js前端技术构建&a…

macOS部署docker容器的坑点

在macOS上,Docker的 --network host 模式与Linux不同,容器并不真正共享主机网络栈。需要使用端口映射来让PostgreSQL可以从主机访问。