微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

只打开包含特定string的文件,然后在Linux命令行上replace

我一直在使用一个简单的find命令来search数百个html文件,然后replace每个文件中的一些简单的文本。

查找并列出包含searchstring的文件

find . -iname '*PHP' | xargs grep 'search-string' -sl

这给了我一个简单的文件列表。

./javascript_open_new_window_form.PHP ./excel_large_number_error.PHP ./linux_vi_string_substitution.PHP ./email_reformat.PHP ./online_email_reformat.PHP

search并replace我使用的string。

sed -i 's/search-string/replace-string/' ./javascript_open_new_window_form.PHP sed -i 's/search-string/replace-string/' ./excel_large_number_error.PHP sed -i 's/search-string/replace-string/' ./linux_vi_string_substitution.PHP sed -i 's/search-string/replace-string/' ./email_reformat.PHP sed -i 's/search-string/replace-string/' ./online_email_reformat.PHP

所以我的问题是…如何组合2个命令,所以我不需要每次都手动复制和粘贴文件名。

感谢您的帮助提前。

你可以试试这个:

find . -iname '*PHP' | xargs grep 'search-string' -sl | while read x; do echo $x; sed -i 's/search-string/replace-string/' $x; done

再次将其重新xargs另一个xargs 。 只要让第二个xargs使用-n 1为输入中的每个文件逐个运行命令,而不是认行为。 喜欢这个:

find . -iname '*PHP' | xargs grep 'search-string' -sl | xargs -n 1 sed -i 's/search-string/replace-string/'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐