2012-06-22 13 views
9

ho una directory con i file timestamp nel formato:UNIX 'ls' di comando - jolly 'O' operatore

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

Voglio un elenco di questi per date specifiche. Qualcosa del genere:

ls -l *201206[19|20|21]* 

Ovviamente quanto sopra non funziona, ma puoi vedere cosa stavo cercando di ottenere. Voglio abbinare qualsiasi cosa in cui la stringa "201206" sia seguita da "19", "20" o "21".

So che questo è possibile utilizzando grep o trovare, ho solo chiesto se poteva essere fatto utilizzando ls.

+0

Come di seguito la risposta di Ed Heal, questo è un problema di shell. Quindi per tua informazione, sto usando la shell di Korn. – Nossidge

+0

In KSH, questo può essere fatto con 'ls -l * 201206 @ (19 | 20 | 21) *' – Nossidge

risposta

6

ls non esegue questa operazione - la shell si espande * ecc. E quindi li passa a ls come argomenti.

consultare la documentazione per la shell - è chiamata globbing

+1

Aha, quindi è la shell che devo guardare. Grazie per questo. – Nossidge

+0

Un segno di spunta sarebbe carino. Trucco per un Edimburgo molto umido –

+1

"Puoi accettare una risposta in 4 minuti" :-) – Nossidge

18

Fornendo hai intenzione di abbinare le date esatte (che compare sei), il modo di modo con l'espansione bash è:

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

Eccellente, grazie. Questo è molto vicino al modo in cui KSH lo fa. – Nossidge

+0

Questa risposta funziona sul mio terminale mac !! – bloodyKnuckles