Permalänk
Medlem

Hjälp med wildcards i bash

Jag sitter här och försöker lära mig wildcards, men jag får inte riktigt kläm på det.

Jag vill filtrera ut filerna ch01.txt, ch13.txt, chA.bak samt chB.txt.

jompa@burken:~/testdir$ ls ch01.txt chB.sep fil01 fil04 fil07 fil10 fil13 fil16 fil19 test1.txt test.txt ch13.txt chB.txt fil02 fil05 fil08 fil11 fil14 fil17 fil20 test31.bak chA.bak chX.txt fil03 fil06 fil09 fil12 fil15 fil18 test1.bak test3.bab

Varför fungerar inte följande kommando?

jompa@burken:~/testdir$ ls ch[ABX].txt ch[ABX].bak ch[013].txt ls: ch[013].txt: Filen eller katalogen finns inte chA.bak chB.txt chX.txt

Jag förstår inte varför inte ch01.txt och ch13.txt innefattas i ovanstående sökning? Något proffs som kan förbarma sig?

Visa signatur
Permalänk
Medlem

Därför att ch[013].txt letar efter filerna ch0.txt, ch1.txt och ch3.txt.

Du skulle kunna skriva ch[01][13].txt men då för du ch01.txt , ch03.txt, ch11.txt och ch13.txt vilket är några förmycket.

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Permalänk

^ch(01|13|A|b)\.(txt|bak)$

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av hagbarddenstore
^ch(01|13|A|b)\.(txt|bak)$

Fungerar inte alls för mig?

Visa signatur
Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av hagbarddenstore
^ch(01|13|A|b)\.(txt|bak)$

Glob är inte samma sak som regexp.

ls ch{1,13,[ABX]}.txt ch[ABX].bak

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.