Tengo cientos de archivos pdf y archivos html en un directorio. Y quiero saber el tamaño total de los archivos pdf.
Por comando du -ch /var/foo
puedo ver el tamaño total del archivo pero solo necesito la última línea, el tamaño total.
Si el directorio contiene solo archivos pdf, puedo usar la -s
opción, pero la opción no se puede usar esta vez.
¿Cómo puedo obtener solo el tamaño total de un tipo de archivo en particular?
shell
wildcards
disk-usage
hierro y
fuente
fuente
du -sh /foo/*.pdf
?du -ch /var/foo/*.pdf | tail -n 1
Respuestas:
Con GNU
du
(es decir, en Linux no integrado o Cygwin), puede usar la--exclude
opción para excluir los archivos que no desea hacer coincidir.Si desea hacer coincidir positivamente los
*.pdf
archivos, necesitará usar algún otro método para enumerar los archivos, ydu
al menos mostrará una línea de salida por argumento, más un total general con la opción-c
. Puede llamartail
para eliminar todo menos la última línea, o sed para eliminar la palabra "total" también. Para enumerar los archivos en ese directorio, use comodines en el shell.Si necesita recorrer archivos en subdirectorios también, use
find
o use un**/
patrón si su shell lo admite. Para**/
, en bash, primero ejecuteshopt -s extglob
, y tenga en cuenta que las versiones de bash hasta 4.2 atravesarán enlaces simbólicos a directorios; en zsh, esto funciona fuera de la caja.Una complicación adicional con la versión de búsqueda es que si hay demasiados archivos,
find
se ejecutarádu
más de una vez, para mantenerse por debajo del límite de longitud de la línea de comando. Con el método comodín, obtendrá un error si eso sucede ("límite de longitud de línea de comando excedido"). El siguiente código supone que no tiene ningún nombre de archivo coincidente que contenga una nueva línea.fuente
--exclude='*.html'
haría que/var/foo/dir.html/foo.pdf
no debe ser contado como las exclusiones también afectan a directorios, también, el uso del disco de directorios incluidos/var/foo
en sí sería contabilizado)Puede dejar que el shell expanda los archivos:
Sin embargo, como puede ver, esto genera tamaños de archivo aproximadamente 1000 veces como se acaba de crear. Una mejor opción es usar la
-b
opción:Los archivos de gran tamaño aún se mostrarán en forma legible para humanos, por ejemplo
173K
.fuente
du
muestra el uso del disco de cada archivo (en la mayoría de los sistemas de archivos, ese es el tamaño del archivo redondeado al siguiente múltiplo del tamaño del bloque). Con la opción-b
,du
muestra el tamaño de cada archivo.