我正在Solaris上使用以下命令从一堆文件中删除协议。
find . -name "*.txt" -exec perl -pi -e 's/http//g' '{}' \;
有没有一种方法可以输出详细的信息,这样我就可以获得有关哪些文件已被编辑的报告?
谢谢,安迪
您可以通过以下方式获得每个文件的替换计数:
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] 删除。
我来说两句