
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 Downloads
está o diretório de onde desejo copiar o arquivo de caracteres alfanuméricos para o meu test
diretó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 cp
comando. 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
cp
não suporta curingas por si só. A expansão de curingas e padrões é feita pelo shell, que é bash
o 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 find
comando:
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
, m
ou 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