GNU/Linux >> Znalost Linux >  >> Linux

Jak vyhledáváte soubory obsahující konce řádků DOS (CRLF) pomocí grep v Linuxu?

grep pravděpodobně není nástroj, který na to chcete. Vytiskne řádek pro každý odpovídající řádek v každém souboru. Pokud nechcete, řekněme, spustit todos 10krát na 10řádkovém souboru, grep není nejlepší způsob, jak toho dosáhnout. Pomocí funkce find spusťte soubor na každém souboru ve stromu a poté procházením toho pro "CRLF" získáte jeden řádek výstupu pro každý soubor, který má zakončení řádků ve stylu dos:

find . -not -type d -exec file "{}" ";" | grep CRLF

dostanete něco jako:

./1/dos1.txt: ASCII text, with CRLF line terminators
./2/dos2.txt: ASCII text, with CRLF line terminators
./dos.txt: ASCII text, with CRLF line terminators

Použijte Ctrl +V , Ctrl +M pro zadání doslovného znaku Carriage Return do řetězce grep. Takže:

grep -IUr --color "^M"

bude fungovat - pokud ^M existuje doslovné CR, které zadáte, jak jsem navrhl.

Pokud chcete seznam souborů, přidejte -l možnost také.

Vysvětlení

  • -I ignorovat binární soubory
  • -U zabraňuje grepu v odstraňování znaků CR. Ve výchozím nastavení to dělá, pokud se rozhodne, že se jedná o textový soubor.
  • -r číst všechny soubory v každém adresáři rekurzivně.

Použití RipGrep:

rg -l \r
-l, --files-with-matches
Only print the paths with at least one match.

https://github.com/BurntSushi/ripgrep


Linux
  1. Rychle vyhledejte soubory v Linuxu pomocí příkazu Locate

  2. Jak najít soubory ve formátu DOS v systému souborů linux

  3. Jak prohledávat manuálové stránky Linuxu (např. pomocí grep)

  1. Jak přidat čísla řádků do textových souborů v systému Linux

  2. Jak najít soubory obsahující dva řetězce dohromady v Linuxu?

  3. Jak vyhledat soubor v souborech war,ear a jar rekurzivně v Linuxu

  1. Jak auditovat změny souborů a spouštění souborů v Linuxu

  2. Jak mohu vyhledat víceřádkový vzor v souboru?

  3. Jak najít textové soubory, které neobsahují text v Linuxu?