web-dev-qa-db-fra.com

du -h --max-depth = 1 prend beaucoup de temps

Lorsque j'essaie de calculer la taille des fichiers et du répertoire dans le répertoire, cela prend plus de temps. La commande que j'ai utilisée est du -ch --max-depth=1.

Existe-t-il un autre moyen de calculer la taille totale des fichiers et des dossiers?

Merci

17
Özzesh

La commande du récupère l'utilisation du disque de tous les fichiers du répertoire et de tous les sous-répertoires (récursivement) par défaut. Le temps passé par du est donc lié au nombre de fichiers analysés. Les options -s ou --summarize et --max-depth influence simplement la sortie de la commande (et non l'analyse elle-même).

Certaines options du qui limitent l'analyse des fichiers sont --one-file-system, --exclude et --exclude-from.

Si vous ne voulez pas rentrer dans les sous-répertoires, vous pouvez utiliser find à la place, ce qui vous donne beaucoup plus de contrôle sur les fichiers à analyser. Mais il ne peut pas résumer récursivement l'utilisation du disque.

find /path/to/dir -maxdepth 1 -printf  "%k\t%p\n"

Remarquerez que %k renvoie toujours l'utilisation du disque par blocs de 1k et l'utilisation signalée du disque de fichiers épars peut être inférieure ou légèrement supérieure à la taille de fichier renvoyée par %s de la commande ls. Ainsi, "% k" se comporte comme la commande du pour les fichiers uniques.

Si vous souhaitez combiner les fonctionnalités de find et du, vous pouvez combiner les deux par quelque chose comme.

find . -maxdepth 1 -name "xyz*" -print0 | du --files0-from=-
22
Jacob