Para encontrar el tamaño de algún grupo de archivos.

Para encontrar el tamaño de algún grupo de archivos.

Estaba tratando de averiguar el tamaño total de todos los archivos que pertenecen a un usuario en particular.

Mientras lo intento, obtengo diferentes tamaños al ejecutar diferentes comandos.

¿Qué comando es correcto para averiguar el tamaño total de todos los archivos propiedad de un usuario en particular?

$ find . -type f -user silviya|ls -lh|head -1 
total 68K
$ find . -type f -user agalya|wc -c
284
$ find . -type f -user agalya|du -sk
120 .

¿A qué se debe esta variación?

Respuesta1

En:

find . -type f -user silviya|ls -lh|head -1 

estás canalizando la salida de findto ls, pero lsno lee su entrada. Toma la lista de archivos para enumerar como argumentos. En ausencia de argumentos como aquí, enumera los archivos no ocultos en el directorio actual. Entonces, aquí obtienes el uso del disco de todos los archivos no ocultos (de cualquier tipo) en el directorio actual (con el tamaño de un archivo determinado contado para cada uno de sus enlaces físicos).

En:

find . -type f -user agalya|wc -c

Estás contando el número de bytes en la salida de find, por lo que ese es el tamaño de las rutas de los archivos (y los delimitadores de nueva línea), no el uso del disco ni el tamaño del archivo.

En:

find . -type f -user agalya|du -sk

Me gusta ls, dutoma la lista de archivos como argumentos, no como su entrada. Entonces, aquí obtienes el uso del disco de todos los archivos y directorios en el directorio actual (recursivamente).

Para obtener el uso del disco de todos los archivos normales propiedad de agalya, con las utilidades GNU, harías:

find . -type f -user agalya -print0 | du -hc --files0-from=- | tail -n 1

--files0-fromle dice du( dusolo GNU) que tome la lista de archivos de la entrada estándar (representada por -aquí). -cproporciona el tamaño acumulativo (tenga en cuenta que los enlaces físicos de un mismo archivo se cuentan solo una vez).

Para obtener el archivoaparentetamaño en lugar del uso del disco, agregue la --apparent-sizeopción a du(nuevamente, específico de GNU). Agregue la -lopción (también específica de GNU) para contar los enlaces físicos varias veces.

Respuesta2

El comando #1 da el tamaño total de los bytes "útiles" de los archivos, de su contenido.

El comando n.° 3 proporciona espacio en disco usado para guardar los archivos. Los discos se dividen en bloques (a menudo de 4 kB de longitud) que no pueden ser compartidos por varios archivos. Por lo tanto, un archivo de cualquier tamaño entre 1 y 4096 B utilizará 4 kB de espacio en disco, por ejemplo [Esto está simplificado. En algunos tipos de FS como ext, se pueden almacenar archivos muy pequeños en la propia tabla de archivos, sin utilizar ningún bloque de datos.]

El comando n.° 2 solo cuenta el número de caracteres delnombres de archivos. (Tamaño de la salida del findcomando).

información relacionada