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

室友打了一把王者的时间,我理清楚了grep,find,管道|,xargs的区别与联系,用的时候不知道为什么要这样用

目录

问题引入

find和grep的基本区别

xargs命令

Linux命令的标准输入 vs 命令行参数

举例总结


问题引入

        在自己做项目的过程中,想使用linux命令统计下一个目录下html文件的数量,在思考应该使用grep还是find去配合wc指令统计文件数量,后来尝试了一下,发现都是可以的。

[zebra@VM-8-12-centos input]$ ls -Rl | grep -E '*.html' | wc -l
8429
[zebra@VM-8-12-centos input]$ find ./ -name '*.html' | wc -l
8429

虽然成功解决了问题,但是我不是很理解两者的区别,于是深入研究了一下。

find和grep的基本区别

  • find搜索的是文件(搜索结果是包括路径的文件名,所以后续可以直接根据文件名操作文件),搜索的匹配条件是文件
  • grep搜索的是字符串,搜索的匹配条件是行
  • find类似windows下的搜索文件功能
  • grep类似windows下的Ctrl+f查找字符串的功能

        这也就解释了为什么用grep的时候,需要先ls -Rl,因为grep搜索的匹配条件是行,所以需要先把一条条文件信息列出来,把ls的结果通过管道|传给grep去搜索。   


      后来我发现find结合xargs可以实现查找目录下文件内容行数的功能,就想知道xargs的作用,以及它和管道|之间的区别和联系

find ./ -name '*.html' | xargs wc -l
...123335 total

xargs命令

 xargs命令的作用,就是将标准输入转为命令行参数。基本使用方式如下:

指令A | xargs 指令B 

        将指令A的标准输出通过管道|传递给xargs,管道传递过来的是标准输入,xargs接收到标准输入后,把标准输入转换成命令行参数,交给指令B去执行。可是这有什么用呢?——接着往下看


Linux命令的标准输入 vs 命令行参数

我们需要知道Linux命令的标准输入与命令行参数的概念

        linux命令可以从两个地方读取要处理的内容,一个是通过命令行参数,一个是标准输入。有些命既能读取标准输入,又能读取命令行参数(命令行参数优先);但是有些指令只能读取命令行参数。

        而管道|就是将前面的标准输出转换成后一条指令的标准输入,但是后一条指令不一定能够读取标准输入,例如 kill , rm 这些程序如果命令行参数中没有指定要处理的内容则不会从标准输入中读取

        xargs就可以将前一条指令的标准输出的字符串,根据空格分割成命令行参数,并以命令行参数的形式交给后一条指令,从而使得一些不能从标准输入里面读取内容的指令可以做到从管道中读取命令行参数。


举例总结 

ls -Rl | grep -E '*.html' | wc -l:查找当前目录下html文件的个数

        ls列出来的是文件的基本属性信息,这些字符串通过管道传递给grep指令,grep在文本中查找行中以html结尾的(-E表示使用正则匹配),然后交给wc统计行数,行数就是html文件的个数。

find ./ -name '*.html' | wc -l:查找当前目录下html文件的个数

        find查找出来的是一行行文件名(包括路径),|只能将这些文件名以字符串的形式作为下一条命令的标准输入,所以wc得到的是一个个字符串,查找行数就是html文件的个数。

find ./ -name '*.html' | xargs wc -l:查找html文件里面的代码行数

        xargs指令可以将前一条指令通过|传递过来的字符串,根据空格分割成命令行参数,并交给后一条指令,wc属于既能通过命令行参数读取,又能通过标准输入读取的指令,优先读取命令行参数,于是就相当于执行 wc -l 文件路径+文件名,这样就会读取文件中的内容,统计文件的行数。

        本文只是介绍了xargs的基本功能,实际上xargs还有很多实用的选项,比如:

        -d:可以更改xargs分割参数的分隔符(默认是按空格分割)

        -p:打印出要执行的命令,询问用户是否要执行

        -t:则是打印出最终要执行的命令,然后直接执行,不需要用户确认。

        -L:如果标准输入包含多行,-L参数指定多少行作为一个命令行参数。

        -I:指定参数的位置

        ......

具体大家可以去问那个男人(滑稽)(man xargs)

相关文章:

室友打了一把王者的时间,我理清楚了grep,find,管道|,xargs的区别与联系,用的时候不知道为什么要这样用

目录 问题引入 find和grep的基本区别 xargs命令 Linux命令的标准输入 vs 命令行参数 举例总结 问题引入 在自己做项目的过程中,想使用linux命令统计下一个目录下html文件的数量,在思考应该使用grep还是find去配合wc指令统计文件数量,后来…...

python 刷题时常见的函数

collections.OrderedDict 1. move_to_end() move_to_end() 函数可以将指定的键值对移动到最前面或者最后面,即最左边或最右边 。 2. popitem() popitem()可以完成元素的删除操作,有一个可选参数last(默认为True),…...

Python之列表推导式和列表排序

Python中的列表推导式,是小编比较喜欢的一种,他能大大减少你的代码量来得到你想要的结果,下面说说列表中常用的几种推导式 列表排序 Python开发中会经常用到排序操作,这里提供两种方式供大家参考,对象的sort()方法和…...

力扣(LeetCode)240. 搜索二维矩阵 II(C++)

题目描述 枚举 枚举整个矩阵&#xff0c;找到等于 target 的元素&#xff0c;则 return true &#xff0c;否则 return false。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int n matrix.size(), m matrix[0]…...

golang defer

文章目录延迟函数的参数在defer语句出现时就已经确定下来了延迟函数没有入参时&#xff0c;延迟函数体内的变量会受到影响延迟函数 *可以* 修改主函数的 *具名* 返回值延迟函数 *无法* 修改主函数的 *匿名* 返回值defer会把声明的 延迟函数以及 函数的入参放到栈上&#xff0c;…...

【Java】线程的死锁和释放锁

线程死锁是线程同步的时候可能出现的一种问题 文章目录1. 线程的死锁1.1 基本介绍1.2 应用案例2. 释放锁2.1 下面的操作会释放锁2.2 下面的操作不会释放锁1. 线程的死锁 1.1 基本介绍 多个线程都占用了对方的锁资源&#xff0c;但不肯相让&#xff0c;导致了死锁&#xff0c;…...

如何使用断点续传上传大文件

概念 大文件上传的需求介绍 不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂。 文件上传简单&#xff0c;文件变大就复杂 上传大文件时&#xff0c;以下几个变量会影响我们的用户体验 服务器处理数据的能力请求超时网络波动 上传时间会变长…...

【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波

【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波 文章目录【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波1. 前言2. 符号说明3. 三种滤波3.1 全通滤波3.2 低通滤波3.2.1 平滑信号分析3.2.2 广义拉普拉斯平滑滤波器3.3 高通滤波4. 总结1. 前言 GCN&…...

python操作mysql数据库详解

使用Python操作MySQL数据库 MySQL是一种关系型数据库管理系统&#xff0c;它可以用来存储和管理大量的数据。之前介绍了大部分主流数据库&#xff0c;今天将介绍如何使用Python来操作MySQL数据库。 安装MySQL 首先&#xff0c;我们需要安装MySQL服务器&#xff0c;可以从MyS…...

netty群聊系统

1设计思路&#xff1a;启动一个服务端&#xff0c;多个客户端第一个客户端启动时&#xff0c;会告诉服务器上线了第二个客户端启动时&#xff0c;告诉服务器上线&#xff0c;并且通知第一个启动的客户端第三个客户端启动时&#xff0c;告诉服务器上线&#xff0c;并且通知第一个…...

Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 前言 大家好&#xff0c;我是小彭。 SharedPreferences 是 Android 平台上轻量级的 K-V 存储框架&#xff0c;亦是初代 K-V 存储框架&#xff0c;至今被很多应用沿用。 有的…...

在windows中使用tomcat搭建Jenkins

1、 准备环境&#xff1a;JDK JDK官网下载&#xff1a;https://download.oracle.com/java/19/latest/jdk-19_windows-x64_bin.msi 2、 tomcat包 tocat官网下载&#xff1a;https://tomcat.apache.org/download-90.cgi 3、 Jenkins.war包 Jenkins官网下载&#xff1a;https://mi…...

Linux系统

linux系统 世界上最重要的服务器端操作系统。 创建新目录 mkdir app mkdir -m 目录权限 目录名 创建有权限的目录名。 创建一个空白文件 touch app.txt创建一个文件。 cat创建一个文件。 vi/vim创建一个文件。 nano创建一个文件。 truncate创建一个文件。 pwd查看当前目录。 rm…...

Mel Frequency Cepstral Coefficients (MFCCs)

wiki里说 在声音处理中&#xff0c;梅尔频率倒谱( MFC ) 是声音的短期功率谱的表示&#xff0c;基于非线性梅尔频率标度上的对数功率谱的线性余弦变换。 倒谱和MFC 之间的区别在于&#xff0c;在 MFC 中&#xff0c;频带在梅尔尺度上等距分布&#xff0c;这比正常频谱中使用的线…...

第七讲---贪心(上课)

1.股票买卖 一、贪心 考虑一种方案&#xff0c;在每次上升的前一天购入股票&#xff0c;并在上升后的当天卖出的方案 if (w[i] > w[i - 1])res w[i] - w[i - 1];接下来证明该贪心思路得出的方案即是最优解。 &#xff08;1&#xff09;证明贪心解 ≥ 最优解&#xff1a; …...

计算机如何思考与图灵完备

图灵完备是针对一套数据操作规则而言的概念,数据操作规则可以是一门编程语言,也可以是计算机实现里面的指令集,比如C/C++是图图灵完备的,通用CPU也是图灵完备的,但是GPU却不一定是图灵完备的。说白了图灵完备定义了一套规则,当这套规则可以实现图灵迹模型里的全部功能时,…...

惠普LaserJet M1005 MFP报错b2

故障现象: 惠普LaserJet M1005 MFP开机后直接报b2错误; 检测维修: 故障大意是:机器的硬件可能出现点突变,此问题建议联系当地维修中心进行处理。...

网络协议(TCP/IP)

目录一、网络分层模型二、OSI模型三、网络传输原理四、TCP/IP1、TCP/IP 原理2、TCP 三次握手/四次挥手3、Http协议和TCP/IP的区别五、HTTP原理六、HTTPS原理七、CDN原理一、网络分层模型 互联网的本质就是一系列的网络协议&#xff0c;最早由ISO国际组织定义为7层网络参考模型…...

2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书

2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书A模块基础设施设置/安全加固&#xff08;200分&#xff09;A-1&#xff1a;登录安全加固&#xff08;Windows, Linux&#…...

6、流程控制

目录一、if二、switch三、for四、break与continue五、goto与Label一、if if使用&#xff1a;逻辑表达式成立&#xff0c;就会执行{}里的内容&#xff1b;逻辑表达式不需要加() if 5 > 9 {fmt.Println("5>9") }if句子中允许包含1个(仅1个)分号&#xff1a;在分…...

Selenium自动化测试常见的异常处理

在软件开发和测试领域,Selenium作为一种广泛使用的自动化测试工具,扮演着至关重要的角色。随着自动化测试的不断普及,如何在测试过程中有效捕获并处理异常,成为了每个测试工程师必须掌握的技能。本文旨在深入探讨Selenium异常处理的方法,通过丰富的案例和代码,帮助新手朋…...

PICAXE单片机驱动DS18B20温度传感器:从硬件连接到数据处理

1. 项目概述&#xff1a;用PICAXE玩转DS18B20数字温度传感器如果你手头有一块PICAXE单片机&#xff0c;想快速实现一个温度监测项目&#xff0c;那么DS18B20这颗数字温度传感器绝对是你的绝佳拍档。它只需要一根数据线就能和MCU通信&#xff0c;抗干扰能力强&#xff0c;还能通…...

自动驾驶卡车软件平台:技术架构、商业模式与商业化落地解析

1. 自动驾驶卡车软件平台全景解析最近几年&#xff0c;自动驾驶卡车这个赛道真是热闹非凡&#xff0c;感觉每周都有新融资、新合作或者新路测的消息出来。作为一个在汽车电子和软件行业摸爬滚打了十几年的老工程师&#xff0c;我一直在密切关注这个领域的动态。自动驾驶卡车&am…...

Nintendo Switch游戏安装终极指南:3种方法解决所有格式兼容问题

Nintendo Switch游戏安装终极指南&#xff1a;3种方法解决所有格式兼容问题 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Nintendo Switch…...

AI搜索优化效果哪家好

传统行业获客越来越难&#xff0c;价格战打得头破血流&#xff0c;这是过去三年我听得最多的抱怨。但就在上个月&#xff0c;我用一个完全不同的方法&#xff0c;让公司的获客成本从单次300元降到了不到30元。秘密就在AI搜索优化&#xff0c;而这30天的实测&#xff0c;让我对市…...

ElevenLabs账号被限频?紧急修复手册:3分钟绕过Rate Limit限制,解锁Pro级语音并发权限

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs超写实语音生成教程 ElevenLabs 是当前业界领先的 AI 语音合成平台&#xff0c;其模型在语调自然度、情感表达力与跨语言一致性方面表现卓越。本章将指导你完成从 API 接入到高质量语音生成的…...

LVGL列表控件实战:5分钟搞定一个带图标和事件响应的菜单界面

LVGL列表控件实战&#xff1a;5分钟打造高交互性嵌入式菜单界面 在嵌入式设备的人机交互设计中&#xff0c;菜单界面是最基础也最关键的组件之一。想象一下&#xff0c;当你需要为智能家居控制面板设计一个简洁明了的操作菜单&#xff0c;或者为工业设备开发一个功能选择界面时…...

Pega Helm Charts:Kubernetes上自动化部署Pega平台的完整指南

1. 项目概述与核心价值如果你正在或即将在Kubernetes上部署Pega Platform&#xff0c;那么pegasystems/pega-helm-charts这个项目绝对是你绕不开的“官方说明书”和“自动化工具箱”。简单来说&#xff0c;这是Pega官方维护的一套Helm Chart&#xff0c;专门用于将Pega Platfor…...

超净实验室建设公司厂家:如何根据需求选择方案|中南实验室建设

在半导体制造、地质微量元素分析、生物制药等高精度领域&#xff0c;实验环境的洁净度直接影响数据可靠性与产品良率。超净实验室作为核心基础设施&#xff0c;其建设需融合空气动力学、材料科学、自动化控制等多学科技术。 一、超净实验室建设公司厂家的设计规划&#xff1a;…...

在Node.js后端服务中集成Taotoken调用多模型API实战

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Node.js后端服务中集成Taotoken调用多模型API实战 构建需要AI能力的Web服务时&#xff0c;后端开发者常面临模型选型、API接入复…...