507 votes

Vérifier la taille du dossier dans Bash

J'essaie d'écrire un script qui va calculer la taille d'un répertoire et si la taille est inférieure à 10GB, et supérieure à 2GB, faire une action. Où dois-je mentionner le nom de mon répertoire ?

# 10GB
SIZE="1074747474"

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

1 votes

Et si vous voulez le trier : serverfault.com/questions/62411/

0 votes

0 votes

Comme il s'agit d'une question populaire, si un débutant rencontre les réponses à cette question et veut en savoir plus sur ce qu'est l'enfer du est et comment tout le monde connaît toutes ces commandes : Vous pouvez taper man du dans votre terminal pour rechercher la commande du dans le manuel. Cela affichera une sortie que vous pouvez visualiser, et résumera tous les drapeaux comme -h, -c, -s, -b, -B, --apparent-size, etc. que les réponses vous suggèrent d'utiliser. Ensuite, vous pourrez décider par vous-même de la meilleure façon d'utiliser du pour votre cas d'utilisation spécifique.

15voto

Shivraaz Points 41

Si vous voulez juste voir la taille globale du dossier et probablement en format MB ou GB, veuillez essayer le script ci-dessous.

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

2 votes

Sous os x, les drapeaux sont -g pour 1-Gbyte et -m pour des comptes de 1 Mo. via man du

6voto

Gutz-Pilz Points 309
# 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

0 votes

Deux variables avec le même nom ? (CHECK)

5voto

Vignesh Raja Points 3514

Si cela peut vous aider, vous pouvez également créer un alias dans votre fichier .bashrc o .bash_profile .

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

Ceci imprime la taille du répertoire courant ou du répertoire que vous avez passé en argument.

0 votes

C'est une excellente réponse

1 votes

Vous devez citer $dir lorsqu'il est transmis à du pour éviter le fractionnement des mots pour la valeur de $dir . Enchaînement de l'appel à du en echo $(…) semble redondant. Au lieu d'appeler pwd vous pouvez utiliser la variable Bash intégrée ${PWD} . Pour vérifier si une variable est définie, je suggère [ -v varname ] .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X