Localizar arquivos usando ls e curingas

1

pwd : ../bin sob bin Eu tenho um diretório chamado datafiles .

Use metacaracteres e o comando ls -lL (com letras maiúsculas e minúsculas L) para listar todos os nomes de arquivos no diretório datafiles que contenha um ponto . com a letra 'f' ou 'u' em qualquer lugar após o ponto.

Eu tentei: ls -lL datafiles *.*f*u

ls -lL datafiles .[f*u]

Obrigado por responder. Infelizmente, nenhuma das soluções funcionou do jeito que eu queria.

Ao esclarecer a questão, /bin/datafiles/file.backup é a raiz do diretório. No diretório /bin , o comando que usei é ls -lL datafiles seguido por metacaracteres.

Estou procurando file.backup que tenha um ponto e seguido por f ou u , não seguido diretamente por f ou u (em qualquer lugar após o ponto) e não terminando por f ou u .

    
por Noureddine Youssfi 12.09.2014 / 22:50

1 resposta

7

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 um f e termina com um u . Em outras palavras, essa glob requer que f e u estejam presentes no nome do arquivo e que eles apareçam na ordem f then u .

    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 caracteres f , * ou u (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 * .

por 12.09.2014 / 22:58