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

101

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

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

fduff
источник
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 в одном указанном каталоге.
Wappenull
источник
Лучший ответ, так как он работает со всеми вариантами окончаний строк. Спасибо!
yoyo
Это лучший и самый простой ответ!
user1447420
5

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

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

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

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

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

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

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

unix2dos *.cmd
dos2unix *.sh
R2AD
источник