El patrón estándar de nombre de archivo para igualar un dígito es [0-9]
. Esto coincide con un solo dígito:
cat file[0-9].txt
Para seleccionar solo dos de estos:
cat file[25].txt
Para números mayores que 9, la expansión de llaves será útil (pero vea la nota a continuación para ver la diferencia entre los patrones globales y las expansiones de llaves):
cat file{25..60}.txt
Nuevamente, la expansión de llaves también permite números individuales:
cat file{12,45,900,xyz}.txt
(tenga en cuenta que en el ejemplo anterior, la expansión de llaves no implica un ciclo aritmético, sino que solo genera nombres basados en las cadenas proporcionadas).
En bash
, con la extglob
opción de shell habilitada ( shopt -s extglob
), lo siguiente también funcionará:
cat file@(12|45|490|foo).txt
El @(...)
patrón coincidirá con cualquiera de los |
patrones delimitados incluidos .
La diferencia entre los patrones de englobamiento como [...]
y @(...)
y expansiones Brace, es que una expansión de llaves se genera en la línea de comandos y en realidad no puede coincidir con los nombres existentes en el directorio actual. Un patrón global de nombre de archivo coincidirá con los nombres, pero el shell no se quejará si no existen todos los nombres posibles. Si no existe un nombre coincidente, el patrón permanecerá sin expandir, a menos que también se establezca la nullglob
opción de shell, en cuyo caso se elimina el patrón.
Ejemplo:
touch file1
ls file[0-9]
Aquí, solo file1
se mostrará la lista de archivos para .
Con ls file{0..9}
, ls
se quejaría de no encontrar file0
, file2
etc.
En el siguiente ejemplo, el primer comando solo tocará los nombres existentes que coincidan con el patrón dado, mientras que la segunda línea creará archivos que aún no existen:
touch file[0-9]
touch file{0..9}
file45.txt
. La expresión de corchete[...]
funciona igual que en la expresión regular, pero se usa!
en lugar de^
decir "no en". Un[...]
patrón siempre coincidirá con un solo carácter.