Не уверен, что именно вы подразумеваете под "ненадежным", но вы можете попробовать:
find . -name '*.php' -print0 | xargs -0 grep -l '^M$'
При этом используется более зверские имена файлов с пробелами в них дружественные опций и находит только возврат каретки непосредственно перед концом строки.
Имейте в виду, что ^M
является одним CTRL M символом, а не два символа.
А также, что в нем будут перечислены файлы, в которых даже одна строка находится в режиме DOS, что, вероятно, в любом случае вам и нужно, так как это было быФайлы UNIX, исправленные не-UNIX редактором.
На основании вашего обновления vim сообщает о ваших файлах в формате DOS:
Если vim равен , сообщая об этомкак формат DOS, то каждая строка заканчивается CRLF
.Так работает Vim.Если даже одна строка не имеет CR
, то это считается форматом UNIX и символы ^M
видны в буфере.Если используется весь формат DOS, символы ^M
не отображаются:
Vim будет искать окончания строк как DOS, так и Unix, но Vim имеет встроенные предпочтения для формата Unix.
- Если все строки в файле заканчиваются CRLF, будет применяться формат файла dos, что означает, что каждый CRLF удаляется при чтении строк в буфер, а параметр буфера 'ff' будет dos.
- Если одна или несколько строк заканчиваются только LF, будет применен формат файла Unix, то есть каждый LF будет удален (но каждый CR будет присутствовать в буфере и будет отображаться как ^ M), а буфер 'ffопция будет Unix.
Если вы действительно хотите знать, что находится в файле, не полагайтесь на слишком умный инструмент, такой как vim: -)
Использование:
od -xcb input_file_name | less
и проверьте окончания строк самостоятельно.