Me he encontrado con patrones globales y comodines, y es de particular interés para mí [!].
Esta construcción es similar a la
[!]construcción, excepto que, en lugar de hacer coincidir cualquier carácter dentro de los corchetes, coincidirá con cualquier carácter, siempre que no aparezca entre el[y].
rm myfile [!192]
Lo anterior, creo, eliminará cualquier / todos los archivos, excepto cualquiera / todos los archivos que tengan 192 en su nombre.
Sin embargo, me preocupa el uso adecuado de esto con una extensión de archivo y, en particular, múltiples condiciones.
¿Cuál sería la sintaxis adecuada en tal situación?
rm myfile [!.gif .csv. mp3]
o
rm myfile [!.gif !.csv !.mp3]
Mi preocupación es que el período podría estar fuera de lugar, por lo que cualquier archivo con un .(¿cuál sería alguno de ellos seguramente?) Luego sería manipulado, cuando estoy tratando de causar la manipulación de archivos específicos.
Esta construcción es similar a la [ ]construcción, excepto que, en lugar de hacer coincidir cualquier carácter dentro de los corchetes, coincidirá con cualquier carácter, siempre que no aparezca entre el [y ].
(Citado de http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm )
Ahora; para mí, eso sugiere que un singular !es suficiente, y todos los valores allí incluidos están contenidos dentro del rango.
[!]es similar pero no como[!]
^tiene exactamente el mismo significado que !en este contexto, por lo tanto, [^a]excluye aexactamente como lo [!a]hace: si el primer carácter que sigue a [es a! o un ^ entonces cualquier carácter no encerrado coincide. ( man bash)
rm myfile [!192]eliminará myfile, así como cualquier archivo de un solo carácter que no se llame 1, 9o 2.
ls my-patternoecho my-commandpara verificar si el bloqueo se realiza de la manera que desea, antes de correrrm