列出以空行开头的所有文件

时间:2017-11-30 23:31:23

标签: bash grep

努力寻找答案......我有一个网站上有一堆PHP文件,而且某个地方在打开php标签之前有一个空行

所以我想要做的是首先尝试在第一行是空行的目录中查找所有文件。

一个命令的加分点,它允许我在打开php标记之前搜索目录中有一个或多个空行的所有文件。

<?php

寻找可以执行此操作的bash命令...

此外,还需要递归搜索该目录中的所有目录。

在Linux上.....谢谢!

更新: 尝试了John1024的答案中的建议,这个带有以下代码的文件正在结果中列出

<?php

/**
 * @file
 * Defines custom functionality for ...
 */

2 个答案:

答案 0 :(得分:2)

perl oneliner

perl -0777 -ne 'print "$ARGV\n" if /^( *\n)+<\?php/' *

以递归方式查看目录:

find . -type f -exec perl -0777 -ne 'print "$ARGV\n" if /^( *\n)+<\?php/' {} +

对于谁来到这里:

-0777 

slurps每个文件,使这项任务相当简单。

答案 1 :(得分:1)

  

&#34;在打开php标记之前搜索目录中有一个或多个空行的所有文件。&#34;

要查找当前目录中包含<?php的行之前有一个或多个空行的所有文件,请尝试:

awk -v last=1 '/<?php/ && !last {print FILENAME; last=1; nextfile} {last=$0}' *

工作原理:

  • -v last=1

    将awk变量last设置为true(1)。

  • /<?php/ && !last {print FILENAME; last=1; nextfile}

    如果当前行包含字符串<?php且最后一行(上一行)为空,则打印文件名,将last重置为true,然后从下一个文件开始。

递归搜索

find . -type f -exec awk -v last=1 '/<?php/ && !last {print FILENAME; last=1; nextfile} {last=$0}' {} +
相关问题