谈谈find,xargs,管道
来源:互联网 发布:sql server exists用法 编辑:程序博客网 时间:2024/06/01 22:22
问题:原意在本文件夹下所有P*.txt文件中用string2替换掉string1,于是输入shell命令:find . -name "P*.txt" | sed -i 's/string1/string2/',发现得不到自己想要的结果。于是简单的了解一下管道的原理以及find,xargs联合使用方式。
1,什么是管道?
指前一个程序的标准输入作为后一个程序的标准输入。
注意:1)管道命令只处理前一个命令正确输出,不处理错误输出
2)管道命令右边命令,必须能够接收标准输入流命令才行。
find命令会在终端(标准输出)上打印出找到的文件。则sed的标准输入是包含文件名的文本。
~/Desktop/test$:lsP1.txt P2.txt在test文件夹下有P1.txt,P2.txt两个文件,每个文件内容为“string1",若find . -name "P*.txt" 的标准输出是在屏幕上打印出
~/Desktop/test$:find . -name "P*.txt"./P2.txt./P1.txt所以sed处理的是文件名,而不是对文件内的文本进行处理
~/Desktop/test$:find . -name "P*.txt" | sed -n 's/P/S/p'./S2.txt./S1.txt
所以find . -name "P*.txt" 返回./P2.txt,./P1.txt.则find . -name "P*.txt" | xargs sed -n 's/string1/string2/p'中后个一个命令实际是sed -n 's/string1/string2/p' P1.txt P2.txt,即对文件进行处理而不是文件名。
~/Desktop/test$:find . -name "P*.txt" | xargs sed -n 's/string1/string2/p'string2string2同样我们可以用grep命令
~/Desktop/test$:find . -name "P*.txt" | grep 'P'./P2.txt./P1.txt比较上下两者的不同。
~/Desktop/test$:find . -name "P*.txt" | xargs grep 'string1'./P2.txt:string1./P1.txt:string1
1 0
- 谈谈find,xargs,管道
- find xargs
- find, xargs
- find xargs
- find && xargs
- (管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- 管道和xargs命令
- xargs和管道
- 管道和xargs命令
- 管道和xargs命令
- 管道和xargs
- 管道和xargs命令
- xargs与管道“|”区别
- 使用find和xargs
- find & xargs usage
- find 与 xargs
- Unix Shell find/xargs
- find和xargs命令
- 二叉树性质
- App迭代开发版本号的规则介绍
- Xargs用法详解
- 第11章上机练习
- MFC combox 如何设置下拉框的大小?
- 谈谈find,xargs,管道
- [Leetcode]57. Insert Interval
- PHP基础知识 - get与post的区别
- Android Service启动方式总结
- Ncurses 命令行图形库
- Android性能优化之内存泄漏分析工具LeakCanary
- 重建hdfs后,Hbase无法使用
- Drools6 动态读取数据库规则
- 复习 Accp7.0 第11章