Olhe para essas expressões regulares
find /tmp/MG/virt-manager-5.0.0/ -maxdepth 1 -type f |grep -v [^a-z]+\.[^a-z]+
/tmp/MG/virt-manager-5.0.0/.mailmap
/tmp/MG/virt-manager-5.0.0/virt-manager
/tmp/MG/virt-manager-5.0.0/DESIGN.md
/tmp/MG/virt-manager-5.0.0/meson.build
/tmp/MG/virt-manager-5.0.0/NEWS.md
/tmp/MG/virt-manager-5.0.0/.gitignore
/tmp/MG/virt-manager-5.0.0/README.md
/tmp/MG/virt-manager-5.0.0/.pylintrc
/tmp/MG/virt-manager-5.0.0/.coveragerc
/tmp/MG/virt-manager-5.0.0/virt-install
/tmp/MG/virt-manager-5.0.0/.packit.yaml
/tmp/MG/virt-manager-5.0.0/COPYING
/tmp/MG/virt-manager-5.0.0/virt-xml
/tmp/MG/virt-manager-5.0.0/virt-manager.spec.in
/tmp/MG/virt-manager-5.0.0/INSTALL.md
/tmp/MG/virt-manager-5.0.0/meson_options.txt
/tmp/MG/virt-manager-5.0.0/virt-manager.spec
/tmp/MG/virt-manager-5.0.0/virt-clone
/tmp/MG/virt-manager-5.0.0/CONTRIBUTING.md
/tmp/MG/virt-manager-5.0.0/setup.cfg
Quero obter strings que contenham letras MAIÚSCULAS, incluindo .md .txt, mas somente se as palavras contiverem pelo menos uma letra maiúscula, para explicar melhor
CONTRIBUTING.MD OK
CONTRIBUTING.txt OK
CONTRIBUTING.TXT OK
Contributing.txt OK (has one capital letter)
hello.TXT OK (contain some capital letters)
contributing.txt NO (only lowercase)
Eu quero obter isso
find /tmp/MG/virt-manager-5.0.0/ -maxdepth 1 -type f |grep -v REGEXWORKS
/tmp/MG/virt-manager-5.0.0/DESIGN.md
/tmp/MG/virt-manager-5.0.0/NEWS.md
/tmp/MG/virt-manager-5.0.0/README.md
/tmp/MG/virt-manager-5.0.0/COPYING
/tmp/MG/virt-manager-5.0.0/INSTALL.md
/tmp/MG/virt-manager-5.0.0/CONTRIBUTING.md
como fazer? Obrigado
Simplesmente assim, usando um
glob
:O
-type f
objetivo é corresponder somente aos arquivos.Se você preferir um
regex
:que pode ser melhor escrito como:
Observação:
-type f
não é combinado com-regex
like-name
para corresponder apenas a nomes de arquivos.Meus dois centavos
Antes de usar
find
o comando, com-maxdepth 1
!Aviso: o shell poderia fazer isso sozinho!
ou
E você pode até mesmo iterar diretamente:
Com
Perl
e uma regex:Com
awk
e uma regex: