ver tamaño subcadena scripts script saber peso linea leer fichero extraer ejemplos ejecutar como comando archivo bash shell directory

bash - subcadena - tamaño de archivo en linux



Compruebe el tamaño de la carpeta en Bash (8)

Para simplemente obtener el tamaño del directorio, nada más:

du --max-depth=0 ./directory

la salida parece

5234232 ./directory

Estoy tratando de escribir una secuencia de comandos que calcule el tamaño de un directorio y si el tamaño es inferior a 10 GB y más de 2 GB realiza alguna acción. ¿Dónde necesito mencionar el nombre de mi carpeta?

# 10GB SIZE="1074747474" # check the current size CHECK="`du /data/sflow_log/`" if [ "$CHECK" -gt "$SIZE" ]; then echo "DONE" fi


Para verificar el tamaño de todos los directorios dentro de un directorio, puede usar:

du -h --max-depth=1


Si ayuda, también puedes crear un alias en tu .bashrc o .bash_profile .

function dsize() { dir=$(pwd) if [ "$1" != "" ]; then dir=$1 fi echo $(du -hs $dir) }

Esto imprime el tamaño del directorio actual o el directorio que ha pasado como argumento.


Si solo desea ver el tamaño agregado de la carpeta y probablemente en formato MB o GB, intente con el siguiente script

$du -s --block-size=M /path/to/your/directory/


Si solo desea ver el tamaño de la carpeta y no las subcarpetas, puede usar:

du -hs /path/to/directory

Actualizar:

Debe saber que du muestra el espacio en disco utilizado; y no el tamaño del archivo.

Puede usar --apparent-size si desea ver la suma de los tamaños de archivo reales.

--apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in (''sparse'') files, internal fragmentation, indirect blocks, and the like

Y, por supuesto, no hay necesidad de la opción -h (legible para humanos) dentro de un script.

En su lugar, puede utilizar -b para facilitar la comparación dentro del script.

Pero debes tener en cuenta que -b aplica --apparent-size por sí mismo. Y puede que no sea lo que necesitas.

-b, --bytes equivalent to ''--apparent-size --block-size=1''

así que creo que deberías usar --block-size o -B

#!/bin/bash SIZE=$(du -B 1 /path/to/directory | cut -f 1 -d " ") # 2GB = 2147483648 bytes # 10GB = 10737418240 bytes if [[ $SIZE -gt 2147483648 && $SIZE -lt 10737418240 ]]; then echo ''Condition returned True'' fi


Tu puedes hacer:

du -h your_directory

lo que le dará el tamaño de su directorio de destino.

Si desea una salida breve, du -hcs your_directory es agradable.


Utilice un resumen ( -s ) y bytes ( -b ). Puede cortar el primer campo del resumen con cut . Poniendolo todo junto:

CHECK=$(du -sb /data/sflow_log | cut -f1)


# 10GB SIZE="10" # check the current size CHECK="`du -hs /media/662499e1-b699-19ad-57b3-acb127aa5a2b/Aufnahmen`" CHECK=${CHECK%G*} echo "Current Foldersize: $CHECK GB" if (( $(echo "$CHECK > $SIZE" |bc -l) )); then echo "Folder is bigger than $SIZE GB" else echo "Folder is smaller than $SIZE GB" fi