Como listar arquivos baseados em corresponder apenas parte do nome do arquivo?

3

Eu tenho muitos arquivos em uma pasta, por exemplo

Kiran.txt
Kiran1.txt
Kiran221.txt
Kiran144.txt
Time.csv
Timer.csv
Timer2.csv
Timer444.csv
Timer266.csv
Account.sh
Account3.sh
Account3333.sh
Account3333.sh
Account333333.sh

Nesse diretório, quero saber como usar grep para exibir arquivos com base em parte do nome do arquivo - por exemplo, aqueles que começam com "Conta" ou aqueles que terminam em ".sh".

    
por user663724 13.09.2011 / 17:14

4 respostas

8

Você pode find

find -type f -name "Account*"

Alternativa 2 (isso pode incluir também a pasta)

ls -1 Account*

Alternativa 3 (grep, isso também pode incluir pasta)

ls -1 | grep -E "^Account"
    
por 13.09.2011 / 17:17
7

Use um curinga ( O que é esse curinga? ):

ls *.sh

O * corresponderá a qualquer coisa antes do final .sh que você deseja. Use as outras opções ls para exibição, por exemplo -l para torná-lo uma listagem longa. Veja man ls para mais informações sobre o que você pode fazer com isso.

Observe que ls também listaria qualquer diretório que terminasse com .sh , não apenas arquivos.

Você também pode usar find para superar esse problema.

find . -type f -maxdepth 1 -name "*.sh"

Este comando apenas lista arquivos "reais". Usar find é algo que eu recomendaria se você quiser fazer algo com os arquivos encontrados depois. Você pode fazer isso com a opção -exec .

    
por 14.09.2011 / 11:38
3

A solução padrão é um pipe:

ls | grep ^Account

Com algo tão simples como "Arquivos começando com a conta", os globs também funcionariam:

ls Account*

mas, em geral, um grep é mais poderoso e não corre o risco de transbordar o comprimento máximo da linha de comando se a sua pasta estiver realmente, realmente cheia.

    
por 13.09.2011 / 17:20
3

Use o seguinte comando

   ls *.sh
    
por 14.09.2011 / 11:39