Gostaria de obter uma lista de logs de falhas no diretório atual para uso em um script externo, os logs são determinados com o padrão FAIL no nome do arquivo, então estou usando um FAIL* para alimentar meus arquivos de script para abrir e processo. No entanto, para cada arquivo FAIL existem dois tipos, um arquivo compactado e um descompactado. Eu só quero abrir o arquivo descompactado.
É possível encontrar em cadeia FAIL* mas não se *.gz/bz2/whatever existir?
Responder1
Você pode testar a presença de uma regex para essas extensões:
for file in *FAIL*; do [[ ! $file =~ .(bz2|gz) ]] && printf "%s\n" "$file"; done
Inserir aviso obrigatório sobrenão analisandols
...
Responder2
Se você usar o find
comando, poderá omitir os arquivos que terminam com a extensão .gz
assim:
$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL.gz
$ find . -name "*FAIL*" ! -name "*.gz"
./FAIL
Você também pode filtrar ls
a saída assim:
$ ls *FAIL* | grep -v '.gz'
FAIL
Mas geralmente é aconselhável não analisar ls
a saída, pois ela não está estruturada de forma que seja propícia para isso.