Poszukuję polecenia basha, aby znaleźć pliki z końcowymi spacjami na końcu każdej linii. Nie jestem zainteresowany usuwaniem spacji, tylko poszukiwaniem plików.Bash: znajdź pliki z końcowymi polami na końcu wierszy
Odpowiedz
Znajdź pliki z jednego lub więcej końcowe znaki kosmicznych:
find . -name "*" | xargs egrep ".* +$"
Uważam, że pierwotne pytanie dotyczyło znalezienia plików, które mają końcowe spacje na WSZYSTKICH liniach. Jednak może to być po prostu złe sformułowanie. – Nit
@Nie mówi wyraźnie w ciele, musiało to ominąć, ale nagłówek pytania może być niejednoznaczny. – matcheek
Poszerzając swoje rozwiązanie, 'egrep -m1 -v -l". * + $ "' Powinno znaleźć wszystkie pliki, które ** nie ** mają spacje końcowe w każdym wierszu, jeśli się nie mylę? – Nit
Znajdź pliki, które spacje.
find . -type f -exec egrep -l " +$" {} \;
Podczas gdy możesz zrobić Zrób to z 'grep', jak pokazały inne odpowiedzi, użycie' find' może nadal być dobrym pomysłem, jeśli chcesz mieć większą kontrolę nad tym, które pliki przeanalizować., Możesz uczynić komendę 'find' o wiele bardziej wydajną, używając' ' + 'zamiast' \; 'do zakończenia podstawowej' -exec' - to wywoła 'egrep' (zazwyczaj) tylko _once_, z _all_ nazwami plików – mklement0
Zauważ, że ta odpowiedź znajduje pliki o _at co najmniej 1_ linii z tra iling spacje. To z pewnością może się przydać i jest prawdopodobnie najczęstszym przypadkiem użycia, ale nie jest tym, o co prosił OP (co najmniej tak sugeruje ich sformułowanie, "pod koniec _leach_ line"). – mklement0
Jeśli celem jest do listy plików, które końcowe spacje w jednej lub kilku liniach:
grep -r '[[:blank:]]$' .
nie do druku wiersze i tylko wydruk tylko nazwy plików, również określić opcję -l
. To jest l
jak w słowie list
, a nie numer 1
.
pytanie brzmi: "na końcu ** każdej ** linii" – Sorin
@Sorin Zgaduję, że nie była to intencja OP, ale przyznają, że pytanie faktycznie tak mówi, wzięte dosłownie ... – twalberg
@twalberg, to jest to, co sprawia, że nie jest to banalne pytanie, które byłoby warte trzeciej prawie identycznej odpowiedzi – Sorin
Istnieje możliwość wyświetlenia plików, które nie zawierają nigdzie w nich miejsca; użyj tego i wyrażenia regularnego dla postaci innej niż spacja tuż przed końcem linii.
grep -L '[^ ]$' *
Aby recurse katalogi, dodaj -r
. Aby wyszukać również inne białe znaki, użyj klasy znaków $'[^ \t]$'
lub POSIX '[^[:blank:]]$'
dla wyrażenia regularnego.
Ładnie wykonane. To naprawdę zwraca tylko pliki WSZYSTKIE, których wiersze mają spacje końcowe - z jednym wyjątkiem: pliki _empty_ (zero-bajtowe) są również dopasowane. Ponadto użycie '*' (bez '-r') spowoduje ostrzeżenia dla podkatalogów, jeśli takie istnieją. '-L' nie jest zgodny z POSIX, ale jest szeroko obsługiwany, biorąc pod uwagę, że zarówno GNU grep, jak i BSD sed go implementują. – mklement0
@ mklement0 Przyjemny połów na pliki o zerowym rozmiarze. Możesz użyć '-s', aby pominąć ostrzeżenia o katalogach, lub użyj' -r .', jeśli chcesz przejść przez całe drzewo katalogów (OP był niespecyficzny w stosunku do zadania). – tripleee
Jeśli pytanie jest dosłownie znaleźć pliki, które mają puste na końcu każdej linii, to powinno działać:
grep -rL '[^[:blank:]]$' .
-L
mówi grep
zgłosić każdy plik, który nie pasuje do wzorca , a wzór szuka linii, które nie mają spacji bezpośrednio poprzedzającej znak nowej linii.
Jeśli celem jest lista plików z końcowe spacje w bieżącą ścieżkę:
grep -rli '[[:blank:]]$' .
- 1. bash znajdź katalogi
- 2. bash: porównanie wierszy z dwóch plików
- 3. Bash: Rurociągi Znajdź w Grep
- 4. Korzystanie Auth z punktami końcowymi
- 5. Znajdź wszystkie pliki htaccess na serwerze
- 6. Powłoka: znajdź pliki na liście w katalogu
- 7. Bash: Znajdź plik z max linii liczyć
- 8. znajdź pliki spoza listy
- 9. Czy mongo może zwracać dokumenty z pustymi/brakującymi polami na końcu w kolejności asc?
- 10. złączyć ciąg na końcu każdej linii wyjściowej w bash/csh
- 11. Znajdź maksymalną liczbę wierszy na grupę w Spark DataFrame
- 12. Linux - Znajdź pliki z nazwą zawierającą ciąg
- 13. Znajdź pliki z niedozwolonymi znakami Windows w nazwie na Linux
- 14. TFS Znajdź pasujące pliki z OR
- 15. Znajdź wszystkie pliki w folderze
- 16. Lista serwerów OpenID z punktami końcowymi
- 17. bash wyciąć kolumny do jednego pliku i zapisać na końcu innego pliku
- 18. Znajdź indeks wierszy tabeli przy użyciu jQuery
- 19. Excel - SUM na końcu listy
- 20. Sortowanie wartości NULL na końcu tabeli
- 21. Sortowanie wierszy PostgreSQL z wartościami NULL i pustym łańcuchem na końcu
- 22. Znajdź najczęstszą linii w pliku w bash
- 23. Jak zapisać wiele wierszy w tablicy bash?
- 24. SQL Server 2008 - znajdź tabelę z większością wierszy
- 25. Bash: Znajdź numer wiersza wywołania funkcji z pliku źródłowego
- 26. Ścieżka systemu Windows z "$" na końcu
- 27. Skrypt powłoki z plikiem JAR na końcu
- 28. BASH skopiuj wszystkie pliki oprócz jednego
- 29. VBA - Znajdź kolumnę z określonym nagłówkiem i znajdź sumę wszystkich wierszy w tej kolumnie
- 30. rbind pliki tekstowe o różnej długości wierszy
UWAGA: Podczas sformułowanie pytania (jak to pisze) jednoznacznie wzywa do znajdowania plików z końcowymi spacjami w _each i każdej linii_, niezwykłość tego wymogu zaowocowała kilkoma odpowiedziami - szczególnie tymi z większością głosów - znajdując pliki z _jednymi lub więcej_ liniami z końcowymi spacjami. – mklement0
sed -n '/ \ + $/p' nazwa pliku – Luv33preet