网站建设资料清单,wordpress 统计2次,网站建设有微信的关系,教学网站模板下载目录
问题引入
find和grep的基本区别
xargs命令
Linux命令的标准输入 vs 命令行参数
举例总结 问题引入 在自己做项目的过程中#xff0c;想使用linux命令统计下一个目录下html文件的数量#xff0c;在思考应该使用grep还是find去配合wc指令统计文件数量#xff0c;后来…目录
问题引入
find和grep的基本区别
xargs命令
Linux命令的标准输入 vs 命令行参数
举例总结 问题引入 在自己做项目的过程中想使用linux命令统计下一个目录下html文件的数量在思考应该使用grep还是find去配合wc指令统计文件数量后来尝试了一下发现都是可以的。
[zebraVM-8-12-centos input]$ ls -Rl | grep -E *.html | wc -l
8429
[zebraVM-8-12-centos input]$ find ./ -name *.html | wc -l
8429
虽然成功解决了问题但是我不是很理解两者的区别于是深入研究了一下。
find和grep的基本区别
find搜索的是文件搜索结果是包括路径的文件名所以后续可以直接根据文件名操作文件搜索的匹配条件是文件grep搜索的是字符串搜索的匹配条件是行find类似windows下的搜索文件功能grep类似windows下的Ctrlf查找字符串的功能这也就解释了为什么用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