我对java代码中使用System.out.println
的担忧,所有java文件都不适用于我。我们在制作中只有.class。有数千个文件有System.out.println
条目。
为了清理这个字符串。如何查找具有此字符串的所有罪魁祸首类文件。
我知道javap,它反汇编.class文件。但不知道javap是否可以用于我的目的。
任何Unix命令或java程序或awk脚本或已知的UI工具都适合我。
我只是想摆脱System.out.println
我在cygwin中使用了以下命令,但没有成功!
find . -iname '*.class' -printf "%p | grep -q 'System.out.println' && echo %p\n" | sh
答案 0 :(得分:2)
我正在使用Gnu grep版本2.10。
然后给出一个示例类文件,其中包含System.out.println
我得到
bash$ grep 'System.out.println' sample.class
Binary file sample.class matches
因此,为了提取匹配的文件,您可以使用以下内容:
#! /bin/bash
shopt -s globstar nocaseglob
files=(**/*.class)
for (( i=0; i<${#files[@]}; i++ )) ; do
file="${files[$i]}"
res=$(grep 'System.out.println' $file)
[[ $? == 0 ]] && awk '{print $3}' <<< "$res"
done