Измените EOL для нескольких файлов за один раз


101

Есть ли способ в Notepad ++ (или даже с помощью другого инструмента) изменить автоматическое завершение строки для нескольких файлов за один раз ?

т.е. преобразовать смесь файлов Windows EOL ( CRLF) и UNIX EOL ( LF) во все файлы Windows EOL ( CRLF)


1
Если notepad ++ не является обязательным требованием, информация здесь может быть актуальной: stackoverflow.com/questions/3110031/…
— reuben 05

Ответы:


103

Заменить диалог может обрабатывать расширенные символы , такие как EOL. Просто измените «Режим поиска» на «Расширенный», и вы сможете работать с EOL (\ r \ n в Windows или \ n в Unix), вкладками (\ t) и т. Д.

Вы также можете использовать вкладку « Найти в файлах » диалогового окна, чтобы выполнить замену в нескольких файлах.

Скриншот


14
Обратите внимание , что это решение не будет работать , если все ваши файлы не уже Unix-стиль. Поскольку замена \nна \r\nтакже преобразуется \r\nв \r\r\n.
— Кирк Уолл,

-1 без изменения преобразования Edit> EOL (см. Dos \ Windows в строке состояния на скриншоте), нажатие ENTER вставит неправильный EOL - а смешанный EOL даже хуже, чем соблюдение любого из стандартов
— апрель

43
замените \ n на \ r \ n. затем замените \ r \ r \ n на \ r \ n. вуаля!
— dev_row

2
Почему ваш пример показывает скриншот \tв Find what? Вкладки не имеют ничего общего с изменением окончания строк, верно?
— Trejder

1
отлично ... он отлично работает в редакторе блокнота ++ ... он экономит огромные усилия, которые мы собираемся потратить на ручные изменения
— анируддха

91

У меня Notepad ++ 6.1.2.
В меню «Правка» у вас есть «Преобразование EOL», которое делает именно то, что вам нужно.


25
который работает на файловой основе, не может быть применен ко всему набору файлов.
— fduff 05

11
Вы прочитали заголовок вопроса? Вы видели часть «изменить EOL для нескольких файлов »?
— Sk8erPeter

2
Вы бы открыли более одного файла, чтобы сделать это последовательно с более чем одним файлом. Как он сказал, «за один раз» изначально там не было.
— gparent

7
На самом деле ответ был для меня очень полезен, так как мне нужно было изменить EOL в отдельных файлах, и я не знал, как это сделать.
— DiegoDD

5
Полезный ответ, поскольку он появляется первым в Google
— Мэтью Лок,

69

Воспользуйтесь функцией «Найти в файлах» (Ctrl + Shift + F). Измените режим поиска в левом нижнем углу на «Регулярное выражение».

В поле "Найти" используйте этот шаблон:

(?<!\r)\n

Заменить:

\r\n

Выберите свой каталог и укажите любые фильтры типов файлов. Если хотите, установите флажок «Во всех подпапках». Щелкните "Заменить в файлах".

При этом любые символы новой строки (\ n), которым в настоящее время не предшествует возврат каретки (\ r), заменяются на \ r \ n. Таким образом, он не будет соответствовать окончанию строки, которое уже соответствует стилю Windows.

введите описание изображения здесь


1
Не могли бы вы объяснить, что (?<!\r)\nзначит, особенно первую ?<!часть, спасибо!
— user1032613 08

2
(?<! )является отрицательным просмотром назад. Это означает совпадение, если префикс отсутствует. В этом случае это проверка \rи будет соответствовать только если \nоленьей коже иметь \rперед ним.
— rtpHarry 09

Ага. Я согласен с rtpHarry. Это часть моего ответа: «любые символы новой строки (\ n), которым в настоящее время не предшествует возврат каретки (\ r)».
— Шон

1
изысканное решение!
— Филипп Михальски

4
С технической точки зрения это наиболее точный и полный ответ на этой странице.
— dotNET

8

Используйте заменить все регулярным выражением

(\r?\n)|(\r\n?)

к

\r\n

Это будет соответствовать каждому возможному шаблону окончания строки (одиночному \ r, \ n или \ r \ n) обратно к \ r \ n (Windows).

Чтобы работать с несколькими файлами:

  • Используйте «Заменить все во всем открытом документе» на вкладке «Заменить». Сначала вам нужно перетащить все файлы в Notepad ++. Хорошо, что у вас будет контроль над тем, с каким файлом работать, но это может быть медленным, если файлов несколько сотен или тысяч.
  • «Заменить в файлах» на вкладке «Найти в файлах» с помощью фильтра файлов по вашему выбору, например, * .cpp * .cs в одном указанном каталоге.

Лучший ответ, так как он работает со всеми вариантами окончаний строк. Спасибо!
— yoyo

Это лучший и самый простой ответ!
— user1447420

5

Единственное РАБОЧИЕ решение, которое я нашел для нескольких файлов / папок после поиска в Google в течение 1 часа, таково:

  • установить пробный режим PyCham ,
  • откройте и выберите папку / папки проекта и следуйте скриншоту

введите описание изображения здесь


Также работает в IntelliJ IDEA Community Edition, которая бесплатна и не требует пробной версии. IntelliJ IDEA .
— CodeMonkey

1

Нашел это решение через это обсуждение :

Вы также можете установить EOL по умолчанию в notepad ++ через «Настройки» -> «Настройки» -> «Новый документ / каталог по умолчанию», затем выберите «Unix / OSX» в поле «Формат».

Примечание: всегда можно использовать внеполосную опцию, используя командную строку:

unix2dos *.cmd
dos2unix *.sh

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.