find、xargs、grep和管道怎么使用


这篇文章主要介绍“find、xargs、grep和管道怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“find、xargs、grep和管道怎么使用”文章能帮助大家解决问题。相信大家都知道在目录中搜索含有固定字符串文件的命令:刚开始的时候,我不熟悉xargs命令,所以直接使用的命令是结果并不是自己所期望的。此命令只是找出文件名*.txttest的情况。
这里我就研究一下,究竟xargs做了什么,使得结果不相同。这两个词我们在Linux命令中是很常见的。但是参数和标准输入其实是有区别的。我们日常使用的很多命令,例如ls -lah .中。lah.都是命令ls的参数。至于标准输入,可以说它某种数据。而通常来讲标准输入的流数据来源就是我们的终端输入。在Linux命令中,有些命令可以接收标准输入,有些是不能的。像上面的ls,就是只能接收参数,不能接收标准输入。像cat命令或echo命令,这些是可以的。怎么分辨一个命令可不可以接收标准输入?很简单,当你敲完命令回车后,终端会等待接收你的输入,例如当你在终端输入cat后,终端会等待你输入字符,当你输入一些字符后,然后按Ctrl-C发送终止符号。这时cat命令接收标准输入完毕,执行命令,也就是将刚才键入的内容输出的标准输出上(屏幕)。管道的作用是将前面命令的标准输出作为后面命令的标准输入。这里要注意,后面的命令接收的是标准输入,所以如果命令不支持接收标准输入,那么就不能直接使用管道,例如常用的ls命令,只能使用参数,而不能使用标准输入,所以[command] | ls是不能使用的。而命令如echocat就可以。那么肯定有方法来实现这些不能使用标准输入的命令与管道结合,这时候xargs便出场了。xargs命令通俗来讲就是将标准输入转成各种格式化的参数,所以命令[command 1] | xargs [command 2]就是将command 1的标准输出结果,通过管道|变成xargs的标准输入,然后xargs再将此标准输入变成参数,传给[command 2]。这样一来,通过xargs命令,我们便可以在管道后面使用那些不接收标准输入的命令了。例如[command 1]|xargs ls,是不是很熟悉?有了以上的知识点,到这里终于可以解答最开始的问题了。为什么命令和
的结果是不一样的了。
我们首先来查看grep手册。通过man grep命令。这里可以看到grep是支持标准输入的。假设目录存在如下文件:那么对于第一个命令find . -name '*.py' |grep test,是将前面命令的标准输出作为标准输入传给了grep test,那么grep是从这些标准输入寻找test字符,也就是文件名组成的字符流可以看到最终选择出的是这些文件名。而对于第二个命令find . -name '*.py' |xargs grep test,通过xargsfind得到的文件名成为了参数传给后面的grep,那么这时候这些文件名就是实实在在的文件标识,grep接收后会按正常的使用方式在各文件中搜寻字符串。到这里算是将findgrepxargs和管道的作用理解清楚了。xargs还有指定参数位置的作用。假设我们要将目录下所有的.py文件放到Python 香港云主机目录中去,可以使用命令
find . -name '*.py' | xargs -I {} mv {} ./Python
参数-I指定了管道前命令作为参数所应该在管道后面命令的位置。我们在查看很多命令手册时,手册会说明命令的使用方法。例如
grep [OPTIONS] PATTERN [FILE...],也就是命令的最后一个位置是文件名[FILE]
这里要注意这个文件名[FILE]也是参数。关于“find、xargs、grep和管道怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注开发云行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: win10开机后一直转圈圈怎么解决

win10开机后一直转圈圈怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。很多小伙伴在开自己电脑的时候,都遇到过电脑一直在转圈圈的情况,进行不了任何其他的操作,遇到这种情况应…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/13 17:21
下一篇 07/13 17:21

相关推荐