2013-04-16 12 views
12

Quando si tenta di calcolare la dimensione dei file e della directory all'interno della directory, è necessario più tempo. Il comando che ho usato è du -ch --max-depth=1.du -h --max-depth = 1 richiede molto tempo

Esiste un altro modo per calcolare le dimensioni totali di file e cartelle?

Grazie

risposta

15

Il comando du recupera l'utilizzo del disco di tutti i file nella directory e tutti i sub-directory (ricorsivamente) per impostazione predefinita. Quindi il tempo trascorso da du si riferisce al numero di file analizzati. Le opzioni -s o --summarize e --max-depth influenzano semplicemente l'output del comando (e non la scansione stessa).

Alcune opzioni du che limitano la scansione dei file sono --one-file-system, --exclude e --exclude-from.

Se non si desidera recurse nelle sub-dir, è possibile utilizzare invece find, che offre un maggiore controllo sui file da analizzare. Ma non può riassumere l'utilizzo del disco in modo ricorsivo.

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

Avviso, che %k ritornano sempre l'utilizzo del disco in blocchi 1K e l'utilizzo del disco riportato file sparsi potrebbe essere meno o leggermente più grande allora la dimensione del file restituito da %s del comando ls. Quindi '% k' si comporta come il comando du per singoli file.

Se si desidera combinare le funzionalità di find e du è possibile combinare entrambi da qualcosa di simile.

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