2012-06-22 9 views
9

Ich habe ein Verzeichnis mit timestamped Dateien im Format:UNIX 'ls' Befehl - wildcard 'OR' Operator

processAlpha20120618.txt 
processAlpha20120619.txt 
processAlpha20120620.txt 
processBeta20120618.txt 
processBeta20120619.txt 
processBeta20120620.txt 
... etc. 

Ich möchte eine Liste dieser für bestimmte Termine. Etwas wie dieses:

Offensichtlich funktioniert das oben genannte nicht, aber Sie können sehen, was ich versuchte zu erreichen. Ich möchte alles abgleichen, wo der Zeichenfolge "201206" entweder "19", "20" oder "21" folgt.

Ich weiß, dass dies möglich ist, mit grep oder finden, ich frage mich, ob esls getan werden könnte.

+0

Laut Ed Heal Antwort ist dies ein Shell-Problem. Zu Ihrer Information benutze ich Korn Shell. – Nossidge

+0

In KSH kann dies mit 'ls -l * 201206 @ (19 | 20 | 21) *' – Nossidge

Antwort

6

ls tut dies nicht - die Shell erweitert * usw. und übergibt sie dann an ls als Argumente.

Blick in der Dokumentation für den Shell - es nennt, ist globbing

+1

Aha getan werden, also ist es die Shell, die ich betrachten muss. Danke dafür. – Nossidge

+0

Ein Tick wäre nett. Machen Sie eine sehr nasse Edinburgh –

+1

"Sie können eine Antwort in 4 Minuten akzeptieren" :-) – Nossidge

18

Providing Sie genaue Termine passen wollen, sind (was es scheint, Sie sind), die Art und Weise, um so mit bash Expansion ist:

ls -l *201206{19,20,21}* 
+0

Ausgezeichnet, danke. Das liegt sehr nahe bei KSH. – Nossidge

+0

Diese Antwort funktioniert auf meinem Mac Terminal! – bloodyKnuckles