ver los inodos como linux bash unix command ls

como ver los inodos en linux



Número máximo de inodos en un directorio? (10)

¿Puedes obtener un recuento real de la cantidad de archivos? ¿Cae muy cerca de un límite de 2 ^ n? ¿Podría simplemente quedarse sin memoria RAM para guardar todos los nombres de los archivos?

Sé que en Windows, al menos, el rendimiento del sistema de archivos bajaría dramáticamente a medida que aumentaba el número de archivos en la carpeta, pero pensé que Linux no sufría este problema, al menos si usabas un símbolo del sistema. Dios te ayudará si tratas de obtener algo como Nautilus para abrir una carpeta con tantos archivos.

También me pregunto de dónde vienen estos archivos. ¿Puedes calcular los nombres de los archivos programáticamente? Si ese es el caso, es posible que pueda escribir un pequeño programa para clasificarlos en varias subcarpetas. A menudo, enumerar el nombre de un archivo específico le otorgará acceso al intentar fallar al intentar buscar el nombre. Por ejemplo, tengo una carpeta en Windows con aproximadamente 85,000 archivos donde funciona esto.

Si esta técnica es exitosa, puede intentar encontrar la manera de hacer que este tipo sea permanente, incluso si solo está ejecutando este pequeño programa como un trabajo cron. Funcionará especialmente bien si puede ordenar los archivos por fecha en alguna parte.

¿Hay una cantidad máxima de inodos en un solo directorio?

Tengo un directorio de más de 2 millones de archivos y no puedo hacer que el comando ls trabaje contra ese directorio. Entonces ahora me pregunto si he excedido el límite de inodos en Linux. ¿Hay un límite antes de un límite numérico de 2 ^ 64?


A menos que reciba un mensaje de error, ls está funcionando pero muy lentamente. Puedes intentar mirar solo los primeros diez archivos como este:

ls -f | head -10

Si va a necesitar ver los detalles del archivo por un tiempo, primero puede ponerlos en un archivo. ¡Es probable que desee enviar la salida a un directorio diferente al que está enumerando en este momento!

ls > ~/lots-of-files.txt

Si desea hacer algo con los archivos, puede usar xargs. Si decide escribir un script de algún tipo para hacer el trabajo, asegúrese de que el script procese la lista de archivos como una secuencia en lugar de todos a la vez. Aquí hay un ejemplo de mover todos los archivos.

ls | xargs -I thefilename mv thefilename ~/some/other/directory

Podría combinar eso con la cabeza para mover una cantidad más pequeña de los archivos.

ls | head -10000 | xargs -I x mv x /first/ten/thousand/files/go/here

Probablemente puedas combinar ls | head ls | head a un script de shell que dividirá los archivos en un grupo de directorios con una cantidad manejable de archivos en cada uno.


Como señala Rob Adams, ls ordena los archivos antes de mostrarlos. Tenga en cuenta que si está utilizando NFS, el servidor NFS clasificará el directorio antes de enviarlo, y 2 millones de entradas pueden tomar más tiempo que el tiempo de espera de NFS. Eso hace que el directorio sea ineficaz a través de NFS, incluso con el indicador -f.

Esto también puede aplicarse a otros sistemas de archivos de red.

Si bien no existe un límite impuesto para la cantidad de entradas en un directorio, es una buena práctica tener un límite para las entradas que anticipa.


El tamaño máximo de directorio depende del sistema de archivos, y por lo tanto el límite exacto varía. Sin embargo, tener directorios muy grandes es una mala práctica.

Debería considerar hacer sus directorios más pequeños clasificando archivos en subdirectorios. Un esquema común es usar los primeros dos caracteres para un subdirectorio de primer nivel, de la siguiente manera:

${topdir}/aa/aardvark ${topdir}/ai/airplane

Esto funciona particularmente bien si se usan UUID, GUID o valores de hash de contenido para nombrar.



No. Los límites de inode son por sistema de archivos y se deciden en el momento de creación del sistema de archivos. Podrías estar llegando a otro límite, o quizás ''ls'' simplemente no funciona tan bien.

Prueba esto:

tune2fs -l /dev/DEVICE | grep -i inode

Debería decirle todo tipo de información relacionada con inode.


Otra opción es find :

find . -name * -exec somcommands {} /;

{} es la ruta de archivo absoluta.

La ventaja / desventaja es que los archivos se procesan uno después del otro.

find . -name * > ls.txt

imprimiría todos los nombres de archivo en ls.txt

find . -name * -exec ls -l {} /; > ls.txt

imprimiría toda la información de ls para cada archivo en ls.txt


Para NetBackup, los binarios que analizan los directorios en los clientes realizan algún tipo de listado de tiempos de espera por la enorme cantidad de archivos en cada carpeta (alrededor de un millón por carpeta, directorio de trabajo de SAP).

Mi solución fue (como Charles Duffy escribe en este hilo) reorganizar las carpetas en subcarpetas con menos archivos.


Pruebe ls -U o ls -f .

ls , de forma predeterminada, ordena los archivos alfabéticamente. Si tienes 2 millones de archivos, ese tipo puede llevar mucho tiempo. Si ls -U (o quizás ls -f ), los nombres de los archivos se imprimirán inmediatamente.


df -i debería decirle la cantidad de inodos usados ​​y gratuitos en el sistema de archivos.