【发布时间】:2014-01-03 12:44:20
【问题描述】:
我正在寻找一个 UNIX 命令,它可以帮助我递归地从文件夹中的所有文件中搜索文本并将其替换为新值。在互联网上搜索后,我发现了这个对我有用的命令。
找到 ./myFolder -type f -print0 | xargs -0 sed -i 's/Application/whatever/g'
请帮助我理解上述命令。我无法理解这部分命令:-print0 | xargs -0,这是什么意思?我只知道 Unix 的基础知识,所以很难理解这一点。我正在使用 bash shell。
还有在 Unix 中提供相同功能的任何替代命令,从谷歌搜索我得到了与 Perl 脚本相关的命令,我不知道 Perl 所以放弃了使用它的想法。
【问题讨论】:
-
试试说
man find,man xargs -
man页面正是为此目的:它们解释了当前操作系统中各种命令行标志的含义。 -
有很多方法可以获得相同的功能。您可以编写一个脚本,递归地
cds 到每个目录,greps 中的文件,执行 shell 替换并将结果写入 tmp 文件。或者,您可以使用递归 greo 或将 find 与 awk 一起使用,或者......您拥有的解决方案可能是最好的方法。
标签: regex bash shell recursion sed