La opción del shell extglob
le da más poderosa coincidencia de patrones en la línea de comandos.
Lo enciende con shopt -s extglob
, y lo apaga con shopt -u extglob
.
En el ejemplo, tendría que inicialmente hacer:
$ shopt -s extglob
$ cp !(*Music*) /target_directory
El completo ext terminó pegote operadores de Bing son (extracto de man bash
):
Si la opción del shell extglob se habilita utilizando el shopt incorporado, se reconocen varios operadores de coincidencia de patrones extendidos . En la siguiente descripción, un pat tern-list es una lista de uno o más patrones separados por un |. patrones compuestos se pueden formar usando uno o más de los siguientes sub-patrones:
- ?(Patrón-lista)
Partidos cero o una aparición de los patrones dados
- * (patrón-lista)
concuerda con cero o más apariciones de los patrones dados
- + (lista-patrón)
coincide con uno o más apariciones de los patrones dados
- @ (patrón-lista)
coincide con uno de los patrones dados
- ! (Lista-patrón)
concuerda con algo menos uno de los patrones dados
Así, por ejemplo, si desea una lista de todos los archivos en el directorio actual que no son .c
o .h
archivos, que harían:
$ ls -d !(*@(.c|.h))
Por supuesto, los trabajos normales cáscara globing, por lo que el último ejemplo también podría escribirse como:
$ ls -d !(*.[ch])
Me gusta esta característica: 'ls/dir/* /! (Base *)' –
¿Cómo se incluye todo (*) y también se excluye! (B *)? –
¿Cómo coincidirías, por ejemplo, todo comenzando con 'f', excepto' foo'? – Noldorin