Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Sugestão] Pesquisa utilizando Caracteres Maiusculo e Minusculo e mostrando o tamanho do arquivo

Somente para contribuir que é possível também realizar pesquisas diferenciando letras maiúsculas e minusculas da seguinte forma.

ls -s [a-z,A-Z]??[1-5]- No caso iremos buscar todos arquivos com com 3 dígitos que tenham de o primeiro dígito de a-z maiúsculo ou minusculo e com um range de 1-5. o -s mostrará o tamanho do arquivo.

Agora me ficou uma dúvida, como faço para ver a extensão do arquivo? e como consigo buscar o arquivo pela extensão?

Desde já agradeço.

4 respostas

Para listar arquivos com diferentes extenções, podemos utilizar o glob do shell também!

por exemplo:

echo 1 > arquivo.txt
echo 2 > arquivo.bla
echo 3 > arquivo.ble
cat arquivo.{txt|bl?}

Essa função de expanção do blob no shell é muito legal, experimente o comando:

echo {a..z}{Juliano,Pereira,da,Rosa}

Também o comando:

echo {Juliano,Pereira,da,Rosa}{Juliano,Pereira,da,Rosa}

Que bacana. ele pode usar o primeiro termo e concatenar ao segundo como uma lista!

uma duvida: No comando abaixo

cat arquivo.{txt|bl?}

o | seria uma condição "e"?

Fora isso, parabéns Lucas, você tem uma excelente didática para lecionar. Mais uma vez obrigado

solução!

O pipe (|) representa a condição "ou", mesmo nos operadores lógicos é utilizado || para realizar a operação de "ou" lógico. O "e" é representado por & e no lógico é &&, mas é necessário salientar que nesse contexto, estamos trabalhando com o glob do shell, que tem algumas semelhanças com expressões regulares, mas não é uma ER.

Essas funções glob são muito legais e também muito perigosas, é possível fazer o seguinte teste:

>-l
>arquivo1.txt
>arquivo2.txt
ls

O que nós veremos? O comando ls vai listar 3 arquivos e nada demais irá acontecer, mas se utilizarmos o glob do shell:

ls *

Tivemos um comportamento inesperado do sistema, porque o * é expandido antes do comando ls ser executado e o arquivo -r passa a ser interpretado como um parâmetro do comando. Tanto o * é expandido antes do comando, que o seguinte comando pode ser usado para realizar um ls sem usar o ls:

echo *

Por que isso é perigoso? Pense no arquivo sudoers, que tem os comandos que podemos colocar para outras pessoas executarem como superusuário, será que conseguirímos fazer o comando no sudoers executar algo que não deveria ser executado e ganharmos acesso de root? :D

Se isto respondeu sua pergunta, não esqueça de marcar o tópico como resolvido, mas só se você quiser

Entendi, então arquivos com possíveis nomes de comandos se aplicados junto a globs podem se tornar potenciais problemas, no caso do sudoers, isso poderia ser uma falha de segurança. Interessante, mais uma vez obrigado pelo esclarecimento, está me ajudando muito nessa jornada de aprendizado.