GNU/Linux >> Tutoriales Linux >  >> Linux

du que cuenta el número de archivos/directorios en lugar del tamaño

He encontrado du --inodes útil, pero no estoy seguro de qué versión de du Requiere. En Ubuntu 17.10, funciona lo siguiente:

du --inodes      # all files and subdirectories
du --inodes -s   # summary
du --inodes -d 2 # depth 2 at most

Combinar con | sort -nr para ordenar descendentemente por número de inodos que contienen.


La forma más fácil parece ser find /path/to/search -ls | wc -l

Buscar se utiliza para recorrer todos los archivos y carpetas.
-ls para enumerar (imprimir) todos los nombres. Este es un valor predeterminado y, si lo omite, seguirá funcionando igual en casi todos los sistemas. (Casi, ya que algunos pueden tener valores predeterminados diferentes). Sin embargo, es un buen hábito usar esto explícitamente.

Si solo usa el find /path/to/search -ls parte imprimirá todos los archivos y directorios en su pantalla.


wc es el conteo de palabras. el -l opción le dice que cuente el número de líneas.

Puede usarlo de varias maneras, por ejemplo,

  • archivo de prueba wc
  • archivo de prueba de gato | baño

La primera opción le permite a wc abrir un archivo y contar el número de líneas, palabras y caracteres en ese archivo. La segunda opción hace lo mismo pero sin nombre de archivo, se lee desde la entrada estándar.


Puedes combinar comandos con una tubería | . La salida del primer comando se canalizará a la entrada del segundo comando. Así find /path/to/search -ls | wc -l usa find para enumerar todos los archivos y directorios y envía la salida a wc. Wc luego cuenta el número de líneas.

(Otra alternativa hubiera sido `ls | wc', pero find es mucho más flexible y una buena herramienta para aprender).

[Editar después del comentario]

Podría ser útil combinar find y exec.

P.ej. find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \; enumerará todos los directorios en /, salvo algunos que no desee buscar. Podemos activar el comando anterior en cada uno de ellos, arrojando una suma de archivos por carpeta en /.

Sin embargo:

  1. Esto usa la extensión específica de GNU -max depth.
    Funcionará en Linux, pero no en cualquier sistema similar a Unix.
  2. Sospecho que es posible que desee una cantidad de archivos para todos y cada uno de los subdirectorios.

El siguiente script PHP hace el truco.

#!/usr/bin/php
<?php 

function do_scan($dir, $dev) {
  $total = 1;

  if (\filetype($dir) === 'dir' && \lstat($dir)['dev'] == $dev) {
    foreach (\scandir($dir) as $file) {
      if ($file !== '.' && $file !== '..') {
        $total += do_scan($dir . \DIRECTORY_SEPARATOR . $file, $dev);
      }
    }

    print "$total\t$dir\n";
  }

  return $total;
};

foreach (\array_slice($argv, 1) as $arg) {
  do_scan($arg, \lstat($arg)['dev']);
}

Póngalo en un archivo (por ejemplo, "treesize "), chmod +x y ejecútelo con ./treesize . | sort -rn | less .


Linux
  1. Cómo encontrar archivos más grandes o más pequeños que el tamaño X en Linux

  2. Encuentra los archivos y directorios más grandes en Linux

  3. ¿Encontrar archivos o directorios más grandes?

  4. ¿Cómo buscar archivos por tamaño y extensión?

  5. ¿Reformatear una gran cantidad de archivos Xml?

Cómo encontrar el número de archivos en un directorio y subdirectorios

Buscar comando en Linux (Buscar archivos y directorios)

Encuentra archivos y directorios en Linux como un profesional

Encuentre archivos y directorios en Linux fácilmente

Forma más rápida de eliminar una gran cantidad de archivos

cómo usar du para ver archivos mayores que un tamaño de umbral