2012-06-22 19 views
9

que tiene un directorio con los archivos de sellos de tiempo en el formato:comando UNIX 'ls' - comodín 'O' operador

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

Quiero una lista de éstos para fechas específicas. Algo como esto:

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

Obviamente lo anterior no funciona, pero se puede ver lo que estaba tratando de lograr. Quiero hacer coincidir cualquier cosa donde la secuencia "201206" vaya seguida de "19", "20" o "21".

Yo sé que esto es posible usando grep o encontrar, Me preguntaba si podría hacerse utilizando ls.

+0

Según la respuesta de Ed Heal a continuación, este es un problema de shell. Entonces, para su información, estoy usando el shell Korn. – Nossidge

+0

En KSH, esto se puede hacer con 'ls -l * 201206 @ (19 | 20 | 21) *' – Nossidge

Respuesta

6

ls no hace esto - el shell expande * etc. y luego los pasa a ls como argumentos.

vistazo a la documentación de la cáscara - es llamar globbing

+1

Aha, por lo que es el caparazón que necesito mirar. Gracias por esto. – Nossidge

+0

Un tic estaría bien. Compense una Edimburgo muy húmeda –

+1

"Puede aceptar una respuesta en 4 minutos" :-) – Nossidge

18

Siempre que está queriendo para que coincida con las fechas exactas (que parece que lo son), por lo que el camino a la expansión bash es:

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

Excelente, gracias. Esto está muy cerca de la forma en que KSH lo hace. – Nossidge

+0

Esta respuesta funciona en mi terminal mac !! – bloodyKnuckles

Cuestiones relacionadas