/ / Použitie regexu alebo niečoho iného na hľadanie prípony súboru - regex, bash, cygwin

Použitie regexu alebo niečo iné na vyhľadávanie prípon - regex, bash, cygwin

Musím vytvoriť bash skript, ktorý vyhľadá v danom adresári určité prípony súborov. Prípony súborov majú tvar .210 .110 .311 .211 a tak ďalej. Nemôžem urobiť iba ".2 pretože existujú názvy súborov, ktoré majú tento názov v názve. Existuje spôsob, ako nastaviť vyrovnávaciu pamäť po „.2„takže rozšírenie má iba 3 znaky? Týmto sa z vyhľadávania odstránia všetky nesprávne výsledky.

Práve teraz používam find /cygdrive/x/Clients -name "*.210"

Vďaka!

odpovede:

3 pre odpoveď č. 1

Mali by ste byť schopní používať zástupné znaky. Pre všetky súbory s trojmiestnou číselnou príponou by malo stačiť nasledujúce.

ls *.[0-9][0-9][0-9]

Ak chcete iba prípony, ktoré začínajú číslom 2, skúste to:

ls *.2[0-9][0-9]

2 pre odpoveď č. 2

Ak som vašu otázku prečítal správne, stačí v cieľovom adresári spustiť nasledovné:

printf "%sn" *.[0-9][0-9][0-9]

Výstup nebude obsahovať bodkové súbory. Ak ich chcete, môžete povoliť dotglob * bash * možnosť. Bolo by bezpečnejšie povoliť nullglob tiež (pozri komentáre od @ c00kiemon5ter nižšie).


1 pre odpoveď č. 3

môžete používať regulárne výrazy, ak použijete príkaz grep

find /cygdrive/x/Clients | grep ".2dd$"

ale je to oveľa pomalšie ako pri použití zástupných znakov, ako uviedol Kurt S.