La extglob
opción de shell le ofrece una coincidencia de patrones más potente en la línea de comandos.
Lo enciendes shopt -s extglob
y lo apagas con shopt -u extglob
.
En su ejemplo, inicialmente haría:
$ shopt -s extglob
$ cp !(*Music*) /target_directory
La disposición completa ext terminó glob operadores de Bing son (extracto de man bash
):
Si la opción de shell extglob está habilitada usando el shopt incorporado, se reconocen varios operadores de coincidencia de patrones extendidos. Una lista de patrones es una lista de uno o más patrones separados por |. Los patrones compuestos se pueden formar utilizando uno o más de los siguientes subpatrones:
- ? (lista de patrones)
Coincide con cero o una ocurrencia de los patrones dados
- * (lista de patrones)
Coincide con cero o más ocurrencias de los patrones dados
- + (lista de patrones)
Coincide con una o más apariciones de los patrones dados
- @ (lista de patrones)
Coincide con uno de los patrones dados
- ! (lista de patrones)
Coincide con cualquier cosa excepto uno de los patrones dados
Entonces, por ejemplo, si quisiera enumerar todos los archivos en el directorio actual que no son .c
o .h
archivos, haría:
$ ls -d !(*@(.c|.h))
Por supuesto, el gloging de shell normal funciona, por lo que el último ejemplo también podría escribirse como:
$ ls -d !(*.[ch])
ls /dir/*/!(base*)