Linux高级查找、过滤

news2024/9/21 14:15:54

find

在指定目录下查找文件和目录

基本语法:find [路径] [ 参数] [查找条件]

常用参数
-name   根据文件或目录的名称查找
find /path -name test.txt

-iname   与name类似,但忽略大小写

-size   根据文件大小查找
find /path -size 10M

-user   根据文件所有者查找
find /path -user root      //查找root用户下的所有文件

-type   根据文件类型查找
find /path -type d
f:普通文件
d:目录
l:符号链接
p:命名管道
b:块设备文件
c:字符设备文件
与正则表达式结合
find /path -regex '.*test.*\.txt'
查找以test开头,.txt结尾的文件
与其他命令结合

统计特定文件数量

返回文件的总数
find /path -name '*.txt' | wc -l

whereis

查找可执行文件、源代码和手册页的位置,适用于寻找安装路径

whereis [选项] 文件名

eg:查找ls位置的命令
表示ls的可执行文件在/usr/bin/ls
手册页在/usr/share/man/man1/ls.1.gz
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

-b:只查找可执行文件的位置

-m:只查找手册页文件的位置

-s:只查找源代码文件的位置

locate

根据预构建的数据库快速查找文件,与find比较,他不会实时更新文件系统,而是根据已经建立的数据库进行查找。查找速度更快。

locate [选项] 文件名

-i:忽略大小写查找文件

-r:使用正则表达式查找文件

-c:只显示文件的数量,不列出具体文件

更新locate的数据库

sudo updatedb
这个命令会遍历本地系统文件,将这些信息存储到本地数据库。
是不需要联网的,只是在本地系统中收集文件路径信息

不分大小写查找带有name字段的文件

统计数量

使用正则表达式

高级查询(grepawk、sed)

grep:擅长查找匹配行

awk:擅长处理数据的列

sed:擅长逐行编辑文件

grep

用于文本搜索,根据正则表达式或文本模式查找文件或标准输入中的匹配行

grep [选项] "要查找的关键字或正则表达式"   文件名(在这个文件里搜索)
常用:
  • -A:在输出中显示匹配的行,并显示匹配行后面的n行
  • -B:在输出中显示匹配的行,并显示匹配行前面的n行
  • -C:在输出中显示匹配的行,并显示匹配行前后的n行
grep -A n "error" file.txt    n为行数
grep -B n "error" file.txt
grep -C n "error" file.txt
  • -i:忽略大小写
  • -n:显示匹配的行号,直接定位
  • -l:只显示包含字段的文件名
  • -w:精确匹配到单词
  • -x:匹配整行

  • -c:计算匹配的行数
  • -r:递归查找
grep -r "error" /var/log/
在/var/log/目录及其子目录下递归查找error
  • -F:使用固定字符串搜索

awk

awk '/关键字/{print $n}' 文件名

/关键字/:表示只在关键字所在行执行操作,不加,则对所有行执行操作

{print $n}:$n表示要输出的第n列,列的分隔符默认为空格或tab

$1:表示第一列

$0:表示每行的所有内容

常用选项
  • -F:定义分隔符
awk -F, '{print $1}' file.csv
指定分隔符为,
输出每行第一列
  • -v:定义外部变量
awk -v var="value" '{print var, $1}' file.txt

-v var="value":将外部变量var移到awk中并赋值为“value”

{print var, $1}:输出var的值和文件中的每行的第一列

  • -f:从脚本文件中读取awk脚本

eg:输出unname -r中的3.10.0

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

1.将‘-’作为分隔符,输出第一列
[root@localhost ~]# uname -r | awk -F'-' '{print $1}'
3.10.0

2.将‘-’转换为空格,将空格作为分隔符,输出第一列
[root@localhost ~]# uname -r | tr '-' ' '
3.10.0 957.el7.x86_64
[root@localhost ~]# uname -r | tr '-' ' ' | awk '{print $1}'
3.10.0

sed

用于处理文件配置、安全策略修改和批量修改系统漏洞时非常有效

可以防止命令注入,过滤用户输入中的危险字符,防止命令注入攻击

sed [选项] '操作命令' 文件
常用选项
  • -e:允许在一条命令中指定多个sed操作
  • -n:禁止自动输出每一行,只有通过显式p命令才会输出
  • -i:在文件中直接进行修改
  • -r:启用扩展正则表达式
  • -f:从文件中读取sed脚本
常用命令
  1. 替换(s命令)
s/old/new/:将匹配的文本old替换为new

默认值替换每行的第一个匹配项

  • 全局替换

使用g选项

sed 's/old/new/g' file.txt
  • 替换并直接修改文件
sed -i 's/old/new/g' file.txt
-i 将替换的内容写入文件,修改原文件
  • 只替换某些行
sed '2s/old/new/g' file.txt
只替换文件中的第二行

sed '2,8s/old/new/g' file.txt
替换文件中的2-8行
  1. 删除
删除特定行
sed '2d' file.txt     //删除第二行

删除多行
sed '2,4d' file.txt    //删除2到4行

删除空行
sed '/^$/d' file.txt   //^$表示空行
  1. 插入与追加

i:在指定行前插入内容

a:在指定行前追加内容

sed '3i\new line' file.txt   //插入
sed '3a\new line' file.txt   //追加
  1. 查找和显示

p:打印匹配的行

sed会默认打印出所有行,使用-n可以抑制默认打印的输出

sed -n '/root/p' /etc/passwd
打印包含root的行
  1. 替换命令中的其他标志

g:全局替换

p:打印被替换的行

i:忽略大小写

sed 's/old/new/i' file.txt
sed 's/old/new/p' file.txt
  1. 使用多个sed
sed -e 's/old/new/' -e 's/kkk/lll/' file.txt
同时将old变为new,将kkk变为lll

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

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

相关文章

HS光流法原理与实现

1. 前言 人眼观察到物体运动时,物体会在视网膜平面上形成一系列连续变化的图像“流过”视网膜,好像一种光的“流”,所以被称为光流。 光流基于像素点定义,所有光流的集合称为光流场。通过对光流场分析,可以得到物体相对于观察者的运动信息。计算光流场的方法有很多,常见的…

Java中的类型转换 Day4

类型转换 类型转换总结来说就是:自动提升 手动下降 3.1 自动类型转换 自动类型转换需要满足的要求 两种类型相互兼容 例:int类型的取值范围包含了short类型的取值范围 目标类型大于源类型 目标类型的取值范围(等号左边)大于源…

debug对于开发工程师很重要

在日常开发中,总会遇到一些出人意料的bug,程序跑飞,上电就挂,程序没有按预期执行诸如此类的问题,没有好的调试方法,真的很难定位问题,更别说解决了。在这里分享我用过的一些调试方法&#xff0c…

欧几里得算法求最大公约数

两个不全为0的非负整数m,n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大正整数。 计算gcd(m,n)的欧几里得算法: 第一步&#xf…

初识爬虫2

requests学习(未更新完): 小技巧,如果你用的也是pycharm,对于控制台输出页面因为数据很长一行,不方便进行查看, 可以让它自动换行: 1.requests文档阅读学习链接:快速上…

linux 脱机

先安装 screen apt-get install screen

【网络】网络通信的传输方式

目录 1.网络通信中的两种基本通信模式 1.1.怎么理解连接 1.2.面向有连接类型 1.3.面向无连接类型 2.实现这两种通信模式的具体交换技术 2.1.电路交换 2.2.分组交换 3.根据接收端数量分类 单播(Unicast) 广播(Broadcast) …

8、值、指针、引用作为参数或返回值

一、作为参数 1、值传递 #include <iostream> using namespace std;void swap(int a, int b) {cout << __FUNCTION__ << "交换前a:" << a << " b:" << b << endl;int tmp a;a b;b tmp;cout << __FUN…

98.游戏的启动与多开-分析与实现多开器

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;97.游戏的启动与多开-共享内存多开检测 以 97.游戏的启动与多开-共享内存多开检测 它的…

若依框架开发

若依环境 介绍 ‌若依是一款快速开发平台(低代码)&#xff0c;用于快速构建企业级后台管理系统&#xff0c;它提供了许多常用的功能模块和组件&#xff0c;包括权限管理、代码生成、工作流、消息中心等 官方地址: https://www.ruoyi.vip/ ‌基于Spring Boot和Spring Cloud‌…

vscode配置C/C++环境(保姆级详细教程)

一. 引言 VSCode&#xff0c;全称为Visual Studio Code&#xff0c;是一款由微软开发的免费、开源的轻量级代码编辑器&#xff0c;它支持多种编程语言和平台&#xff0c;并提供丰富的扩展功能&#xff0c;让开发者能够更高效地编写代码。 大家能来搜用如何在VSCode配置C/C环境…

Linxu系统:kill命令

1、命令详解&#xff1a; kill命令是用于向进程发送信号&#xff0c;通常用来终止某个指定PID服务进程&#xff0c;kill命令可以发送不同的信号给目标进程&#xff0c;来实现不同的操作&#xff0c;如果不指定信号&#xff0c;默认会发送 TERM 信号&#xff08;15&#xff09;&…

1. 初识LLM API:环境配置与多轮对话演示

其实AI应用并不是一个什么很高大上的东西&#xff0c;你可以将它当作一个文字的“调库”行为&#xff0c;“调库”只需要知道库名就行了&#xff0c;这里实际也是如此。甚至你只需要知道你想问什么&#xff0c;将你的消息作为输入&#xff0c;就能从大模型得到输出。而这个“库…

CSS学习17--CSS3 过渡、2D变形、3D变形、动画

CSS3 过渡、2D变形、3D变形、动画 一、过渡二、2D变形 transform1.移动 translate2.缩放 scale3. 旋转 rotate4. 倾斜 skew 三、3D变形1. rotateX&#xff08;&#xff09;rotateY&#xff08;&#xff09; rotateZ&#xff08;&#xff09;2. 体会透视 perspective3. translat…

直播电商系统卷轴模式源码开发的发展前景

随着互联网技术的飞速发展和直播电商的日益兴起&#xff0c;直播电商系统已成为数字经济的重要组成部分。其中&#xff0c;卷轴模式作为一种结合了积分奖励和任务兑换机制的商业模式&#xff0c;正逐渐在直播电商领域崭露头角&#xff0c;并展现出广阔的发展前景。本文将从卷轴…

【腾讯云】AI驱动的数据库TDSQL-C如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图

欢迎来到《小5讲堂》 这是《腾讯云》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景效果图流程图创建数据库基本信息数据库配置设置密码控制台开启…

学工控必须知道的变频器字母符号

#变频器##变频器故障##伺服电机##电工##电工#工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

windows软件应该安装在哪里

100%原创动力 文章目录 前言一、安装路径二、数据文件夹1.用户文件夹2.AppData 三、为什么需要管理员权限四、绿色软件 前言 windows软件应该安装在哪里 一、安装路径 windows系统安装软件应该安装在哪里&#xff0c;根据windows规范应该安装在某个盘的 Program Files 目录…

ICP备案办理的流程中股东附件不显示如何解决

ICP备案办理的流程中股东附件不显示如何解决 问题解决方案注意吐槽 问题 问题弹窗&#xff1a; 部分一级股东没有上传证照附件,请检查并上传。 问题内容&#xff1a; 在【股东追溯及其相关证明材料】这一页中无法保存&#xff0c;提示要上传证照附件&#xff0c;但这边找不到任…

dwg2text抽取dwg文件文字不完整分析

libdxfrw项目中dxf2text命令可以抽取dwg文件中的文字部分&#xff0c;编译完工程后对手头上的dwg文件提取时发现抽取不完整&#xff0c;对源码进行分析时发现该命令只处理了text部分&#xff0c;不处理mtext部分 bool dx_iface::printText(const std::string& fileI, dx_da…