Проблема в том, что обычный grep не соответствует нескольким строкам.Итак, я бы установил pcregrep
и попробовал бы следующую команду:
pcregrep -rMl '\?>[\s\n]+\z' *
Это будет соответствовать всем файлам в папке и подпапках (часть -r
), используя многострочное совпадение PCRE (часть -M
)), и только перечислить их имена файлов (часть -l
).
Что касается шаблона, то он соответствует ?>
, за которым следуют 1 или более пробелов или символов новой строки, после которых следует конец файла \z
.Однако, когда я запустил это в своей папке, многие из файлов PHP на самом деле заканчивались одной новой строкой.Таким образом, вы можете обновить это регулярное выражение на '\?>[\s\n]+\n\z'
, чтобы сопоставлять файлы с пробелами сверх одиночного символьного терминатора \n
.
Наконец, вы всегда можете использовать od -c filename
для вывода однозначного представления файла, есливам нужно проверить точное окончание последовательности символов.