Bash: найти файлы с завершающими пробелами в конце строк

Я ищу команду bash для поиска файлов с конечными пробелами в конце каждой строки. Я не заинтересован в удалении пробелов, а просто в поиске файлов.

Ответы

Ответ 1

Найдите файлы с конечными пробелами.

find . -type f -exec egrep -l " +$" {} \;

Ответ 2

Если цель состоит в том, чтобы перечислить файлы, которые имеют завершающие пробелы в одной или нескольких строках:

grep -r '[[:blank:]]$' .

Чтобы не печатать строки и печатать только имена файлов, также укажите параметр -l. Это l, как и слово list, а не число 1.

Ответ 3

Найти файлы с одним или несколькими символами конечного пробела:

find . -name "*" | xargs egrep ".* +$"

Ответ 4

Существует возможность перечислить файлы, которые не содержат соответствия нигде в них; используйте это и регулярное выражение для символа, отличного от пробела непосредственно перед концом строки.

grep -L '[^ ]$' *

Чтобы перезаписать каталоги, добавьте -r. Для поиска других символов пробела используйте класс символов $'[^ \t]$' или POSIX '[^[:blank:]]$' для регулярного выражения.

Ответ 5

Если целью является список файлов с конечным пробелом в текущем пути:

grep -rli '[[:blank:]]$' .

Ответ 6

Если вопрос в буквальном смысле заключается в поиске файлов с пробелом в конце каждой отдельной строки, то это должно работать:

grep -rL '[^[:blank:]]$' .

-L сообщает grep сообщать обо всех файлах, которые не соответствуют шаблону, и шаблон ищет строки, которые не имеют пробела, непосредственно предшествующего новой строке.

Ответ 7

Используя ack (или ag):

ack -l ' \n'

Примечание. Как и некоторые другие ответы, в этом списке будут перечислены файлы, содержащие одну или несколько строк с конечными пробелами.