Changez EOL sur plusieurs fichiers en une seule fois


101

Existe-t-il un moyen dans Notepad ++ (ou même avec un autre outil) de changer la ligne se terminant automatiquement sur plusieurs fichiers en une seule fois ?

c'est-à-dire convertir un mélange de fichiers Windows EOL ( CRLF) et UNIX EOL ( LF) en tous les Windows EOL ( CRLF)


1
Dans le cas où notepad ++ n'est pas une exigence ferme, les informations ici pourraient être pertinentes: stackoverflow.com/questions/3110031/…
reuben

Réponses:


103

La boîte de dialogue Remplacer peut gérer des caractères étendus comme EOL. Changez simplement "Mode de recherche" en "Etendu", et vous pouvez travailler avec EOL (\ r \ n sous Windows ou \ n sous Unix), les onglets (\ t), etc.

Vous pouvez également utiliser l' onglet Rechercher dans les fichiers de la boîte de dialogue pour effectuer le remplacement sur plusieurs fichiers.

Capture d'écran


14
Notez que cette solution ne fonctionnera pas si tous vos fichiers ne sont pas déjà de style Unix. Depuis le remplacement \npar \r\nsera également converti \r\nen \r\r\n.
Kirk Woll

-1 sans changer la conversion Edit> EOL (voir Dos \ Windows dans la barre d'état de votre capture d'écran), appuyer sur ENTRÉE insérera la mauvaise EOL - et avoir mélangé EOL est encore pire que de
respecter

43
remplacez \ n par \ r \ n. puis remplacez \ r \ r \ n par \ r \ n. voila!
dev_row

2
Pourquoi votre exemple capture d' écran montre \ten Find what? Les onglets n'ont rien à voir avec la modification des fins de ligne, non?
trejder

1
super ... cela fonctionne parfaitement dans l'éditeur notepad ++ ... cela économise un effort énorme, que nous allons passer par des changements manuels
aniruddha

91

J'ai Notepad ++ 6.1.2.
Dans le menu "Edition", vous avez "Conversion EOL" qui fait exactement ce dont vous avez besoin.


24
qui fonctionne sur une base de fichier, ne peut pas être appliqué à un ensemble complet de fichiers.
fduff

10
Avez-vous lu le titre de la question? Avez-vous vu la partie "modifier EOL sur plusieurs fichiers "?
Sk8erPeter

2
Vous ouvririez plus d'un fichier pour le faire dans plusieurs fichiers, séquentiellement. Comme il l'a dit, «en une seule fois» n'était pas là à l'origine.
gparent

7
En fait, la réponse m'a été très utile, car je devais changer EOL dans des fichiers uniques, et je ne savais pas comment.
DiegoDD

5
Réponse utile car cela apparaît en premier dans Google
Matthew Lock

69

Utilisez la fonction «Rechercher dans les fichiers» (Ctrl + Maj + F). Changez le mode de recherche en bas à gauche sur «Expression régulière».

Dans la zone "Rechercher quoi", utilisez ce modèle:

(?<!\r)\n

Remplacer par:

\r\n

Choisissez votre répertoire et spécifiez les filtres de type de fichier. Cochez «Dans tous les sous-dossiers» si vous le souhaitez. Cliquez sur "Remplacer dans les fichiers".

Cela remplace tous les caractères de nouvelle ligne (\ n) qui ne sont actuellement pas précédés d'un retour chariot (\ r) par \ r \ n. Donc, cela ne correspondra pas aux fins de ligne qui sont déjà de style Windows.

entrez la description de l'image ici


1
Pourriez-vous expliquer ce que (?<!\r)\nsignifie, en particulier la première ?<!partie, merci!
user1032613

2
la (?<! )est une lookbehind de négatif. Cela signifie correspondre si le préfixe est absent. Dans ce cas, il vérifie \ret ne correspondra que s'il \nn'y a pas de \rdevant.
rtpHarry

Oui. Je suis d'accord avec rtpHarry. Voici cette partie de ma réponse: "tous les caractères de nouvelle ligne (\ n) qui ne sont pas actuellement précédés d'un retour chariot (\ r)".
Sean

1
solution la plus sophistiquée!
Philipp Michalski

4
Techniquement parlant, c'est la réponse la plus précise et la plus complète de cette page.
dotNET

8

Utilisez remplacer tout par une expression régulière

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

à

\r\n

Cela correspondra à tous les modèles de fin de ligne possibles (\ r, \ n ou \ r \ n) à \ r \ n (Windows).

Pour opérer sur plusieurs fichiers, soit:

  • Utilisez "Tout remplacer dans tous les documents ouverts" dans l'onglet "Remplacer". Vous devrez d'abord faire glisser et déposer tous les fichiers dans Notepad ++. Il est bon que vous ayez le contrôle sur le fichier sur lequel opérer, mais cela peut être lent s'il y a plusieurs centaines ou milliers de fichiers.
  • "Remplacer dans les fichiers" dans l'onglet "Rechercher dans les fichiers", par le filtre de fichier de votre choix, par exemple * .cpp * .cs sous un répertoire spécifié.

Meilleure réponse, car cela fonctionne avec toutes les saveurs de fins de ligne. Merci!
yoyo

C'est la réponse la meilleure et la plus simple!
user1447420

5

Le seul TRAVAIL solution que j'ai trouvé pour plusieurs fichiers / dossiers, après googler pendant 1 heure est la suivante:

  • installer PyCham mode d'essai ,
  • ouvrez et sélectionnez votre dossier / dossiers de projet et suivez la capture d'écran

entrez la description de l'image ici


Fonctionne également dans IntelliJ IDEA Community Edition, qui est gratuite et ne nécessite pas d'essai. IntelliJ IDEA .
CodeMonkey

1

J'ai trouvé cette solution via cette discussion :

Vous pouvez également définir la valeur EOL par défaut dans notepad ++ via "Paramètres" -> "Préférences" -> "Nouveau document / Répertoire par défaut" puis sélectionnez "Unix / OSX" dans la case Format.

Remarque: on peut toujours utiliser une option hors bande en utilisant la ligne de commande:

unix2dos *.cmd
dos2unix *.sh

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.