获取命令行perl命令以报告所做的更改

用户名

我正在Solaris上使用以下命令从一堆文件中删除协议。

find .  -name "*.txt"  -exec perl -pi  -e 's/http//g' '{}' \;

有没有一种方法可以输出详细的信息,这样我就可以获得有关哪些文件已被编辑的报告?

谢谢,安迪

斯蒂芬·查泽拉斯(Stephane Chazelas)

您可以通过以下方式获得每个文件的替换计数:

find . -type f -exec perl -pi -e '
    $count{$ARGV} += s/http//g;
    END {for (keys %count) {print "$_: $count{$_}\n" if $count{$_}}}' {} +

请注意,在那种情况下以及在您的原始解决方案中,perl无论是否在文件中进行替换都将重写文件。

不要;用来终止-exec命令。perl一次可以处理多个文件,而无需为每个文件调用一个perl。

如果只希望该输出而没有实际进行替换,则只需在上面的命令中替换-pi为即可-n

您也可以这样做:

find . -type f -exec grep -c http /dev/null {} +

计算包含http(不一定与http出现的次数相同)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章