室友打了一把王者的时间,我理清楚了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++)
题目描述 枚举 枚举整个矩阵,找到等于 target 的元素,则 return true ,否则 return false。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int n matrix.size(), m matrix[0]…...
golang defer
文章目录延迟函数的参数在defer语句出现时就已经确定下来了延迟函数没有入参时,延迟函数体内的变量会受到影响延迟函数 *可以* 修改主函数的 *具名* 返回值延迟函数 *无法* 修改主函数的 *匿名* 返回值defer会把声明的 延迟函数以及 函数的入参放到栈上,…...
【Java】线程的死锁和释放锁
线程死锁是线程同步的时候可能出现的一种问题 文章目录1. 线程的死锁1.1 基本介绍1.2 应用案例2. 释放锁2.1 下面的操作会释放锁2.2 下面的操作不会释放锁1. 线程的死锁 1.1 基本介绍 多个线程都占用了对方的锁资源,但不肯相让,导致了死锁,…...
如何使用断点续传上传大文件
概念 大文件上传的需求介绍 不管怎样简单的需求,在量级达到一定层次时,都会变得异常复杂。 文件上传简单,文件变大就复杂 上传大文件时,以下几个变量会影响我们的用户体验 服务器处理数据的能力请求超时网络波动 上传时间会变长…...
【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波
【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波 文章目录【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波1. 前言2. 符号说明3. 三种滤波3.1 全通滤波3.2 低通滤波3.2.1 平滑信号分析3.2.2 广义拉普拉斯平滑滤波器3.3 高通滤波4. 总结1. 前言 GCN&…...
python操作mysql数据库详解
使用Python操作MySQL数据库 MySQL是一种关系型数据库管理系统,它可以用来存储和管理大量的数据。之前介绍了大部分主流数据库,今天将介绍如何使用Python来操作MySQL数据库。 安装MySQL 首先,我们需要安装MySQL服务器,可以从MyS…...
netty群聊系统
1设计思路:启动一个服务端,多个客户端第一个客户端启动时,会告诉服务器上线了第二个客户端启动时,告诉服务器上线,并且通知第一个启动的客户端第三个客户端启动时,告诉服务器上线,并且通知第一个…...
Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 SharedPreferences 是 Android 平台上轻量级的 K-V 存储框架,亦是初代 K-V 存储框架,至今被很多应用沿用。 有的…...
在windows中使用tomcat搭建Jenkins
1、 准备环境:JDK JDK官网下载:https://download.oracle.com/java/19/latest/jdk-19_windows-x64_bin.msi 2、 tomcat包 tocat官网下载:https://tomcat.apache.org/download-90.cgi 3、 Jenkins.war包 Jenkins官网下载:https://mi…...
Linux系统
linux系统 世界上最重要的服务器端操作系统。 创建新目录 mkdir app mkdir -m 目录权限 目录名 创建有权限的目录名。 创建一个空白文件 touch app.txt创建一个文件。 cat创建一个文件。 vi/vim创建一个文件。 nano创建一个文件。 truncate创建一个文件。 pwd查看当前目录。 rm…...
Mel Frequency Cepstral Coefficients (MFCCs)
wiki里说 在声音处理中,梅尔频率倒谱( MFC ) 是声音的短期功率谱的表示,基于非线性梅尔频率标度上的对数功率谱的线性余弦变换。 倒谱和MFC 之间的区别在于,在 MFC 中,频带在梅尔尺度上等距分布,这比正常频谱中使用的线…...
第七讲---贪心(上课)
1.股票买卖 一、贪心 考虑一种方案,在每次上升的前一天购入股票,并在上升后的当天卖出的方案 if (w[i] > w[i - 1])res w[i] - w[i - 1];接下来证明该贪心思路得出的方案即是最优解。 (1)证明贪心解 ≥ 最优解: …...
计算机如何思考与图灵完备
图灵完备是针对一套数据操作规则而言的概念,数据操作规则可以是一门编程语言,也可以是计算机实现里面的指令集,比如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原理一、网络分层模型 互联网的本质就是一系列的网络协议,最早由ISO国际组织定义为7层网络参考模型…...
2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书
2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux&#…...
6、流程控制
目录一、if二、switch三、for四、break与continue五、goto与Label一、if if使用:逻辑表达式成立,就会执行{}里的内容;逻辑表达式不需要加() if 5 > 9 {fmt.Println("5>9") }if句子中允许包含1个(仅1个)分号:在分…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
