Cambia EOL su più file in una volta


101

C'è un modo in Notepad ++ (o anche con un altro strumento) per modificare la riga che termina automaticamente su più file in una volta ?

cioè converti un mix di file Windows EOL ( CRLF) e UNIX EOL ( LF) in modo che siano tutti Windows EOL ( CRLF)


1
Nel caso in cui Notepad ++ non sia un requisito fisso, le informazioni qui potrebbero essere rilevanti: stackoverflow.com/questions/3110031/…
reuben

Risposte:


103

La finestra di dialogo Sostituisci può gestire caratteri estesi come EOL. Cambia semplicemente "Modalità di ricerca" in "Esteso" e puoi lavorare con EOL (\ r \ n in Windows o \ n in Unix), schede (\ t), ecc.

È inoltre possibile utilizzare la scheda Trova nei file della finestra di dialogo per eseguire la sostituzione su più file.

Immagine dello schermo


14
Nota che questa soluzione non funzionerà se tutti i tuoi file non sono già in stile unix. Poiché la sostituzione \ncon \r\nverrà convertita anche \r\nin \r\r\n.
Kirk Woll

-1 senza cambiare Modifica> conversione EOL (vedi Dos \ Windows nella barra di stato dello screenshot), premendo INVIO verrà inserito l'EOL sbagliato - e avere EOL misto è anche peggio che mantenere uno qualsiasi degli standard
Aprillion

43
sostituire \ n con \ r \ n. quindi sostituire \ r \ r \ n con \ r \ n. Ecco!
dev_row

2
Perché il tuo esempio di screenshot viene visualizzato \tin Find what? Le tabulazioni non hanno nulla a che fare con la modifica delle terminazioni di riga, giusto?
trejder

1
fantastico ... funziona perfettamente nell'editor Notepad ++ ... consente di risparmiare enormi sforzi, che spenderemo con modifiche manuali
aniruddha

91

Ho Notepad ++ 6.1.2.
Nel menu "Modifica" hai la "conversione EOL" che fa esattamente ciò di cui hai bisogno.


24
che funziona su un file, non può essere applicato a un intero set di file.
fduff

10
Hai letto il titolo della domanda? Hai visto la parte "modifica EOL su più file "?
Sk8erPeter

2
Dovresti aprire più di un file per farlo su più di un file, in sequenza. Come ha detto, "in una volta" non era originariamente presente.
gparent

7
In effetti la risposta mi è stata molto utile, poiché avevo bisogno di cambiare EOL in singoli file, e non sapevo come.
DiegoDD

5
Risposta utile in quanto viene visualizzata per prima su Google
Matthew Lock

69

Utilizza la funzione "Trova nei file" (Ctrl + Maiusc + F). Cambia la modalità di ricerca in basso a sinistra in "Espressione regolare".

Nella casella "Trova cosa", utilizza questo modello:

(?<!\r)\n

Sostituirlo con:

\r\n

Scegli la tua directory e specifica eventuali filtri per il tipo di file. Se lo desideri, seleziona "In tutte le sottocartelle". Fare clic su "Sostituisci nei file".

Ciò che fa è sostituire qualsiasi carattere di nuova riga (\ n) che non è attualmente preceduto da un ritorno a capo (\ r) con \ r \ n. Quindi non corrisponderà alle terminazioni di riga che sono già in stile Windows.

inserisci qui la descrizione dell'immagine


1
Potresti spiegare cosa (?<!\r)\nsignifica, soprattutto la prima ?<!parte, grazie!
user1032613

2
la (?<! )è una lookbehind negativo. Significa corrispondenza se il prefisso è assente. In questo caso sta verificando \re corrisponderà solo se non \nha una \rprecedente.
rtpHarry

Sì. Sono d'accordo con rtpHarry. Questa è questa parte della mia risposta: "qualsiasi carattere di nuova riga (\ n) che non è attualmente preceduto da un ritorno a capo (\ r)".
Sean

1
soluzione più sofisticata!
Philipp Michalski

4
Tecnicamente parlando, questa è la risposta più precisa e completa in questa pagina.
dotNET

8

Usa sostituisci tutto con un'espressione regolare

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

per

\r\n

Questo farà corrispondere ogni possibile pattern di fine riga (singolo \ r, \ n o \ r \ n) a \ r \ n (Windows).

Per operare su più file:

  • Utilizzare "Sostituisci tutto in tutti i documenti aperti" nella scheda "Sostituisci". Dovrai prima trascinare e rilasciare tutti i file in Notepad ++. È positivo che tu abbia il controllo su quale file operare, ma può essere lento se ci sono centinaia o migliaia di file.
  • "Sostituisci nei file" nella scheda "Trova nei file", in base al filtro file di tua scelta, ad esempio * .cpp * .cs in una directory specificata.

La migliore risposta, poiché funziona con tutti i gusti delle terminazioni di riga. Grazie!
yoyo

Questa è la risposta migliore e più semplice!
user1447420

5

L'unica soluzione FUNZIONANTE che ho trovato per più file / cartelle, dopo aver cercato su Google per 1 ora è questa:

  • installa la modalità di prova di PyCham ,
  • apri e seleziona la cartella / cartelle del progetto e segui lo screenshot

inserisci qui la descrizione dell'immagine


Funziona anche in IntelliJ IDEA Community Edition, che è gratuito e non richiede una prova. IntelliJ IDEA .
CodeMonkey

1

Ho trovato questa soluzione tramite questa discussione :

Puoi anche impostare l'EOL predefinito in Notepad ++ tramite "Impostazioni" -> "Preferenze" -> "Nuovo documento / Directory predefinita", quindi seleziona "Unix / OSX" nella casella Formato.

Nota: è sempre possibile utilizzare un'opzione fuori banda utilizzando la riga di comando:

unix2dos *.cmd
dos2unix *.sh

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.