Isso procura por arquivos no diretório de dados que contenham um ponto seguido por f ou u, mas não terminem em f ou u:
ls -lL datafiles/*.*[fu]*[^fu]
Resposta à versão 1 desta questão
Você escreveu "f ou u". Para escrever isso em um glob, use [fu]
. Para também insistir em que f
ou u
seja precedido por um ponto, tente:
ls -lL .*[fu]* *.*[fu]*
O primeiro glob acima, .*[fu]*
, se expande para arquivos que começam com um ponto (o que significa que eles são normalmente 'ocultos'). O segundo, *.*[fu]*
, expande para arquivos que têm um ponto em algum lugar no nome, mas não começam com ponto.
Os arquivos ocultos geralmente servem como arquivos de configuração para vários programas. Se você não quiser vê-los, e um normalmente não, então omita o primeiro glob e use simplesmente:
ls -lL *.*[fu]*
Mais sobre globs
-
*.*f*u
expande para um nome de arquivo que contém um ponto seguido (não necessariamente imediatamente) por umf
e termina com umu
. Em outras palavras, essa glob requer quef
eu
estejam presentes no nome do arquivo e que eles apareçam na ordemf
thenu
.Normalmente,
*
significa zero ou mais de qualquer caractere. Como um caso especial, o acima não corresponde aos arquivos que começam com um ponto porque esses arquivos são, por convenção, "ocultos". -
.[f*u]
expande para um nome de arquivo que consiste em um ponto imediatamente seguido por um dos caracteresf
,*
ouu
(e nada mais depois disso). Como a estrela está dentro dos colchetes, ela perde o significado usual de zero ou mais caracteres e se torna literal*
.