como selecionar arquivos em um diretório com o operador booleano AND

4

Eu quero selecionar (find / grep / ls) certos arquivos em um diretório começando com certas palavras e terminando com uma certa extensão. Exemplo:

  • bluebelt_hans_hoff.jpg
  • bluebelt_hans_hoff.JPEG
  • bluebelt_peter_gort.jpg
  • bluebelt_peter_gort.JPEG

Eu só quero os arquivos começando com "bluebelt" AND terminando apenas com a extensão ".jpg" (e não a extensão JPEG). Como fazer isso na linha de comando?

    
por user3467407 23.12.2016 / 14:03

2 respostas

3

Se você quiser apenas listar os arquivos no terminal, use:

ls -d bluebelt*.jpg

Se você quiser fazer algo com esses arquivos, use:

for file in bluebelt*.jpg; do
    your_command "$file"
done
    
por 23.12.2016 / 14:59
1
find /dir/with/yor/files -type f -iname 'bluebelt*.jpg'

A vantagem deste método sobre o ls -driven é nesse método que o método encontrará apenas arquivos enquanto o comportamento do ls pode ser inesperado. Digamos que, se você tiver um diretório chamado bluebelt1.jpg, o utilitário ls exibirá todos os arquivos contidos neste diretório.

Pensei que esta variante tem duas coisas. (1) pesquisará sem distinção entre maiúsculas e minúsculas. Se você não deseja especificar -name . (2) ele pesquisará recursivamente. Se você não quiser, pode usar o -maxdepth . Por favor, veja o man find para explicação.

    
por 23.12.2016 / 17:48