Sto cercando un comando bash per trovare i file con spazi finali alla fine di ogni riga. Non sono interessato a rimuovere gli spazi, ma solo a trovare i file.Bash: trova i file con spazi finali alla fine delle righe
risposta
Trova file con uno o più caratteri finali abitabile:
find . -name "*" | xargs egrep ".* +$"
Credo che la domanda iniziale fosse trovare i file che hanno spazi finali su TUTTE le linee. Potrebbe essere solo una brutta formulazione in origine, però. – Nit
@Nit dice chiaramente nel corpo, deve averlo perso, ma l'intestazione della domanda può essere ambigua. – matcheek
L'espansione sulla tua soluzione, però, 'egrep -m1 -v -l". * + $ "' Dovrebbe trovare tutti i file che ** non ** hanno spazi finali su ogni riga, se non sbaglio? – Nit
trovare i file che ha finali spazi.
find . -type f -exec egrep -l " +$" {} \;
Mentre puoi fare fare con solo 'grep', come hanno dimostrato altre risposte, usare' find' potrebbe essere ancora una buona idea, se vuoi avere più controllo su quali file esaminare., Puoi rendere il comando 'find' molto più efficiente usando' + 'invece di' \; 'per terminare il primario' -exec' - invocherà 'egrep' (in genere) solo _once_, con tutti i nomi dei file. – mklement0
Si noti che questa risposta trova i file con _almeno 1_ riga con tra spazi di iling. Questo può sicuramente essere utile ed è probabilmente il caso d'uso più comune, ma non è quello che l'OP chiedeva (almeno come implicito nel loro testo "alla fine di _each_ line"). – mklement0
Se l'obiettivo è quello di elencare i file che sono trailing spazi bianchi in una o più linee:
grep -r '[[:blank:]]$' .
Per non stampare le righe, e solo stampare solo i nomi dei file, specificare anche l'opzione -l
. Quello è l
come nella parola list
, non il numero 1
.
la domanda dice "alla fine di ** ogni ** riga" – Sorin
@Sorin, ho intenzione di indovinare che non era proprio l'intenzione dell'OP, ma ammetterò che la domanda in realtà lo dice, presa alla lettera .. – twalberg
@twalberg, è ciò che lo rende una domanda non banale, che varrebbe la terza risposta quasi identica – Sorin
C'è un'opzione per elencare i file che non contengono una corrispondenza in alcun punto; usa quello e una regex per un personaggio diverso da uno spazio poco prima del termine della riga.
grep -L '[^ ]$' *
Per recurse directory, aggiungere -r
. Per cercare altri caratteri di spazi bianchi, utilizzare una classe di caratteri $'[^ \t]$'
o POSIX '[^[:blank:]]$'
per l'espressione regolare.
Ben fatto. In realtà restituisce solo file TUTTE le cui linee hanno spazi finali - con una sola eccezione: anche i file _empty_ (zero-byte) sono abbinati. Inoltre, l'utilizzo di '*' (senza '-r') comporterà degli avvisi per le sottodirectory, se presenti. '-L' non è compatibile con POSIX, ma ampiamente supportato, dato che sia GNU grep che BSD sed lo implementano. – mklement0
@ mklement0 Un bel problema con i file di dimensioni zero. Puoi usare '-s' per sopprimere gli avvertimenti sulle directory, o usare' -r .' se vuoi attraversare un intero albero di directory (l'OP non era specifico sull'attività). – tripleee
Se la domanda è letteralmente a trovare i file che hanno un vuoto alla fine di ogni singola linea, allora questo dovrebbe funzionare:
grep -rL '[^[:blank:]]$' .
Il -L
dice grep
segnalare ogni file che non corrisponde al modello e il pattern sta cercando linee che non hanno uno spazio immediatamente precedente alla newline.
Se l'obiettivo è quello di file di elenco con spazi finali nel percorso corrente:
grep -rli '[[:blank:]]$' .
- 1. Xcode 4.5 - spazi bianchi finali
- 2. Elimina tutti gli spazi e le schede alla fine delle righe
- 3. Python aggiunge un CR aggiuntivo alla fine delle righe ricevute
- 4. Trimspool Oracle solo spazi finali finali (non spazi vuoti iniziali)
- 5. Nome file con spazi in BASH
- 6. Visual Studio aggiunge testo alla fine delle righe utilizzando find/replace con espressione regolare di fine riga ($)
- 7. Checkstyle: spazi finali problema regexp
- 8. Bash, riga di accodamento alla fine di ogni file
- 9. JavaScript rimuovere spazi iniziali e finali
- 10. Trova file PHP per iniettare spazi bianchi
- 11. Bash come aggiungere la parola alla fine di una riga?
- 12. Rimuovere righe vuote da txtfiles, rimuovere gli spazi dall'inizio e alla fine della linea di
- 13. Aggiungi spazi alla fine di alcune opzioni di completamento automatico di Bash, ma non ad altre?
- 14. rimozione di spazi finali con gsub in R
- 15. Visualizzazione spazi finali in vim
- 16. Trova file, rinomina in posto unix bash
- 17. Leggi n righe alla volta usando Bash
- 18. bash lista sorta di stringhe per numero alla fine
- 19. I vantaggi dello stripping degli spazi bianchi finali?
- 20. Spazio vuoto alla fine dei risultati delle query di SQL Server
- 21. Il testo UILabel include più spazi alla fine
- 22. MySQL selezionare i campi contenenti spazi iniziali o finali
- 23. Eclipse Checkstyle Disabilita "Lline ha spazi finali"
- 24. Rimozione spazi alla fine di una stringa in Java
- 25. Come rimuovere gli spazi bianchi finali con sed?
- 26. Rimozione di più spazi e spazi finali utilizzando gsub
- 27. basename con spazi in uno script bash?
- 28. Come utilizzare l'opzione getopts senza argomento alla fine in bash
- 29. Rimuovi gli spazi dall'inizio e alla fine di una stringa
- 30. Trova due righe nello stesso file
Nota: Anche se la formulazione della domanda (al momento della stesura) richiama in modo inequivocabile per la ricerca di file con gli spazi finali su _each e ogni linea_, l'inusualità di questo requisito ha portato ad alcune risposte, in particolare quella con i voti più alti, trovando invece file con uno o più righe con spazi finali. – mklement0
nome file -n '/ \ + $/p' – Luv33preet