Problema ao usar curingas quando executo o comando CP no Terminal

Problema ao usar curingas quando executo o comando CP no Terminal

Eu sou novo e tento aprender o Terminal Command. Hoje enfrentei algum problema com a opção de comando curinga cp. Eu escrevi no Terminal este comando

cp Downloads/[:alnum:]  test/

Aqui Downloadsestá o diretório de onde desejo copiar o arquivo de caracteres alfanuméricos para o meu testdiretório. Mas quando executei este comando me mostrou:

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

Quero saber como posso usar as classes curinga acima para cpcomando. E também como posso usar o comando de caractere curinga acima.

Curingas são

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

As classes comumente usadas são

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

Como posso usar esses curingas e suas classes?

Responder1

cpnão suporta curingas por si só. A expansão de curingas e padrões é feita pelo shell, que é basho padrão.

Em qualquer caso, as classes de caracteres devem ser especificadas dentro []- o que exclui as []que já as rodeiam. Igual a:

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

No entanto, [[:alnum:]]corresponderá apenas a um único caractere alfanumérico. A correspondência de todos os nomes de arquivos contendo apenas caracteres alfanuméricos não pode ser feita apenas com os curingas já listados. Para uma filtragem mais poderosa, consulte o findcomando:

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

Dentro de bash, você pode usarglobos estendidos:

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

Responder2

[:alnum:]na verdade corresponde a um único caracteredo conjunto :, a, l, n, u, mou seja, dado

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

então

$ ls [:alnum:]
a  m

Para corresponder a um único caractere do alfanuméricoaula [:alnum:]precisa ser[[:alnum:]]

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

Para corresponder a um único caractere alfanumérico seguido de zero ou mais caracteres arbitrários

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

Para corresponder ao arquivo que consisteapenasde caracteres alfanuméricos usando shell globbing requerglobo estendido( extglob) sintaxe

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

informação relacionada