我正在寻找一个UNIX命令,帮助我递归地从文件夹中的所有文件中搜索文本,并用新值替换它.在网上搜索后,我遇到了这个对我有用的命令.
找到./myFolder -type f -print0 | xargs -0 sed -i's/Application/whatever/g'
请帮助我理解上面的命令.我无法理解命令的这一部分:-print0 | xargs -0
,这表明了什么?我只知道Unix中的基础知识,因此很难理解这一点.我正在使用bash shell.
还有任何替代命令在Unix中提供相同的功能,从谷歌搜索我得到了与Perl
脚本相关的命令,我不知道Perl
如此放弃了使用它的想法.
Also are there any alternate commands that provides same functionality in Unix
是的,你可以做到这一切:
find ./myFolder -type f -exec sed -i 's/Application/whatever/g' '{}' \;
-exec
选项find
适用于:
-exec utility [argument ...] ;
如果名为utility的程序返回零值作为其退出状态,则为True.可选参数可以传递给实用程序.表达式必须以分号('';'')结束.如果从shell调用find,则可能需要引用分号,如果shell将其视为控件操作符.如果字符串''{}''出现在实用程序名称中的任何位置或参数中,则它将被当前文件的路径名替换.将从执行查找的目录执行实用程序.实用程序和参数不受shell模式和结构的进一步扩展的影响.