Как мне найти файлы, которые не заканчиваются переводом строки / перевода строки? - PullRequest
25 голосов
/ 08 января 2011

Как мне перечислить обычные текстовые (.txt) имена файлов, которые не заканчиваются символом новой строки?

например: список (вывод) этого имени файла:

$ cat a.txt
asdfasdlsad4randomcharsf
asdfasdfaasdf43randomcharssdf
$ 

и не указывать (выводить) это имя файла:

$ cat b.txt
asdfasdlsad4randomcharsf
asdfasdfaasdf43randomcharssdf

$

Ответы [ 11 ]

0 голосов
/ 24 января 2019

Лучший вариант, который я мог придумать, это:

git grep --cached -Il '' | xargs -L1 bash -c 'if test "$(tail -c 1 "$0")"; then echo "No new line at end of $0"; exit 1; fi'

Используется git grep, потому что в моем сценарии использования я хочу убедиться, что файлы, переданные в ветку git, заканчиваются символом новой строки.

Если это требуется вне git-репо, вы, конечно, можете просто использовать grep.

grep -RIl '' . | xargs -L1 bash -c 'if test "$(tail -c 1 "$0")"; then echo "No new line at end of $0"; exit 1; fi'

Почему я использую grep?Поскольку вы можете легко отфильтровать двоичные файлы с помощью -I.

, тогда обычная вещь xargs / tail, найденная в других ответах, с добавлением к завершится с 1 , если в файле нет перевода строки,Так что это может быть использовано в Githook перед фиксацией или CI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...