Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
Encuentre el recuento de archivos que coinciden con un patrón en un directorio en Linux

Soy nuevo en Linux. Tengo un directorio en Linux con aproximadamente 250,000 archivos. Necesito encontrar la cantidad de archivos que coincidan con un patrón.

Intenté usar el siguiente comando:

 ls -1 20061101-20131101_kh5x7tte9n_2010_* | wc -l

Recibí el siguiente mensaje de error:

 -bash: /bin/ls: Argument list too long 0

Por favor ayuda. Gracias por adelantado

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Podría ser mejor usar find para esto:

 find . -name "pattern_*" -printf '.' | wc -m

En su caso específico:

 find . -maxdepth 1 -name "20061101-20131101_kh5x7tte9n_2010_*" -printf '.' | wc -m

find devolverá una lista de archivos que coincidan con los criterios. -maxdepth 1 hará que la búsqueda se realice solo en la ruta, sin subdirectorios ( ¡gracias Petesh! ). -printf '.' imprimirá un punto para cada coincidencia, de modo que los nombres con nuevas líneas no hagan que wc -m se rompa.

Entonces wc -m indicará el número de caracteres que coincidirá con el número de archivos.


Comparación de rendimiento de dos opciones posibles:

Vamos a crear 10 000 archivos con este patrón:

 $ for i in {1..10000}; do touch 20061101-20131101_kh5x7tte9n_201_$i; done

Y luego compare el tiempo que lleva obtener el resultado con ls -1 ... o find ... :

 $ time find . -maxdepth 1 -name "20061101-20131101_kh5x7tte9n_201_*" | wc -m 10000 real 0m0.034s user 0m0.017s sys 0m0.021s $ time ls -1 | grep 20061101-20131101_kh5x7tte9n_201 | wc -m 10000 real 0m0.254s user 0m0.245s sys 0m0.020s

find es x5 veces más rápido! Pero si usamos ls -1f ( ¡gracias Petesh de nuevo! ), entonces ls es incluso más rápido que find :

 $ time ls -1f | grep 20061101-20131101_kh5x7tte9n_201 | wc -m 10000 real 0m0.023s user 0m0.020s sys 0m0.012s
over 4 years ago · Santiago Trujillo Relatório

0

obtuviste un "argumento demasiado largo" porque Shell expande tu patrón a la lista de archivos. tratar:

 find -maxdepth 1 -name '20061101-20131101_kh5x7tte9n_2010_*' |wc -l

preste atención: el patrón está entre comillas para evitar la expansión del shell

over 4 years ago · Santiago Trujillo Relatório

0

Prueba esto:

 ls -1 | grep 20061101-20131101_kh5x7tte9n_2010_ | wc -l
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda