Listar arquivos de extensão particular

5

Ok, isso é estranho. Eu estou usando este código,

ls *.prj

Para listar todos os arquivos com a extensão .prj no diretório, mas estou recebendo este erro,

  

bash: / bin / ls: Lista de argumentos muito longa

Eu eventualmente gostaria de obter a contagem de arquivos e eu estava usando,

  

ls * .prj | wc -l

Mas mesmo este comando está dando o mesmo erro. Alguma ideia de onde estou errado?

    
por Sam007 15.11.2012 / 21:21

3 respostas

1

Nada, há um limite no número de argumentos que o bash pode lidar. Fazer

ls | grep '\.prj$' | wc -l
    
por January 15.11.2012 / 21:24
7

Use o comando find em vez

 find . -name "*.prj"

Você também pode combinar os comandos com o find

find . -name "*.prj" -exec COMMAND {} \;

Espero que isso ajude.

    
por devav2 15.11.2012 / 21:26
3

A análise da saída de ls não é confiável . Ele provavelmente funcionará no seu caso, mas ls manipula caracteres não imprimíveis. Aqui está uma maneira totalmente confiável de contar os arquivos correspondentes a uma determinada extensão. Este trecho de shell cria uma matriz contendo os nomes dos arquivos e, em seguida, imprime o número de elementos na matriz.

a=(*.prj)
echo ${#a[@]}
    
por Gilles 15.11.2012 / 22:37