Problema con el uso de comodines cuando hago el comando CP en la Terminal

Problema con el uso de comodines cuando hago el comando CP en la Terminal

Soy nuevo y trato de aprender Terminal Command. Hoy me enfrenté a un problema con la opción del comando cp comodín. Escribí en la Terminal este comando

cp Downloads/[:alnum:]  test/

Aquí Downloadsestá el directorio desde donde quiero copiar el archivo de caracteres alfanuméricos a mi testdirectorio. Pero cuando ejecuté este comando me mostró:

cannot stat ‘Downloads/[:alnum:]’: No such file or directory

Quiero saber cómo puedo utilizar las clases comodín anteriores para cpel comando. Y también cómo puedo usar el comando de carácter comodín anterior.

Los comodines son

 * 
? 
[characters]
[!characters]
[[:classes:]]

Las clases más utilizadas son

[:alnum:]-> Match any Alphanumeric Character
[:alpha:] -> Match any Alphabetic Character
[:digit:] -> Match any nummeral 
[:lower:] -> Matches any lowercase letter
[:upper:] -> Matches any Uppercase letter

¿Cómo puedo utilizar esos comodines y sus clases?

Respuesta1

cpno admite comodines por sí solo. La expansión de comodines y patrones la realiza el shell, que es bashel predeterminado.

En cualquier caso, las clases de caracteres deben especificarse dentro [], lo que excluye las []que ya las rodean. Al igual que:

cp Downloads/[[:alnum:]] test/

Sin embargo, [[:alnum:]]sólo coincidirá con un único carácter alfanumérico. Para hacer coincidir todos los nombres de archivos que contienen solo caracteres alfanuméricos, no se puede hacer solo con los comodines que ya están enumerados. Para un filtrado más potente, consulte el findcomando:

find . -regextype posix-extended -maxdepth 1 -regex '.*/[[:alnum:]]*'

Dentro bash, puedes usarglobos extendidos:

shopt -s extglob
cp Downloads/*([[:alnum:]]) test/

Respuesta2

[:alnum:]en realidad coincide con un solo carácterdel conjunto :, a, l, n, u, mes decir, dado

$ ls
_?_  123  7  a  abc  :file  fi:le  m

entonces

$ ls [:alnum:]
a  m

Para hacer coincidir un solo carácter del alfanuméricoclase [:alnum:]Necesita ser[[:alnum:]]

$ ls [[:alnum:]]
7  a  m

Para hacer coincidir un solo carácter alfanumérico seguido de cero o más caracteres arbitrarios

$ ls [[:alnum:]]*
123  7  a  abc  fi:le  m

Para hacer coincidir el archivo que consistesolode caracteres alfanuméricos usando shell globbing requiereglobo extendido( extglob) sintaxis

$ ls +([[:alnum:]])
123  7  a  abc  m

información relacionada