我正在尝试搜索我的代码库,以查找缩进不一致的文件。基本上,只要文件在内部保持一致,我都不在乎文件是否带有制表符或空格。
很明显,我可以运行grep -Prn "^\t" src
来查找以制表符开头的行,并运行grep -Prn "^ " src
来查找空格,但是我不知道如何搜索两个模式至少包含1个匹配项的文件
尽我所能提出类似的建议
for f in `grep -Prl "^\t" src` ; do grep -Pl "^ " $f; done
,但是对于大型代码库来说这非常慢。使用单个grep命令有更快的方法吗?
答案 0 :(得分:0)
您是否要在src目录下查找缩进中包含制表符和空格的文件名(可能在单独的行中)?使用任何UNIX框上的任何shell中的任何find和任何awk就是这样:
find src -type f -exec awk '/^[[:space:]]*\t/{t=1} /^[[:space:]]* /{b=1} b&&t{print FILENAME; exit}' {} \;
否则,使用GNU find和GNU awk会更有效(因为awk将一次调用成批文件而不是每次调用1个文件):
find src -type f -exec awk '/^[[:space:]]*\t/{t=1} /^[[:space:]]* /{b=1} b&&t{print FILENAME; b=t=0; nextfile}' {} +