Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> sistemi >> Unix >> .

Quale attraversamento calcola la dimensione totale di ciascuna directory nel sistema UNIX?

Nessuno dei metodi di attraversamento UNIX standard (come `find`,` ls` o `albero`) calcola direttamente la dimensione totale di ciascuna directory in un singolo comando. In genere mostrano le dimensioni dei file all'interno di una directory, ma non la somma ricorsiva delle dimensioni di tutti i file e sottodirectory all'interno di quella directory.

Per calcolare la dimensione totale di ciascuna directory, in genere useresti `du` (uso del disco). Tuttavia, `Du` non è intrinsecamente" attraversa "nel senso di visitare ogni directory e stampare separatamente il nome e le dimensioni. Riferisce le dimensioni di ogni directory, *comprese le sue sottodirectory *, che è leggermente diversa da un attraversamento che elencherebbe esplicitamente ogni directory e le sue dimensioni indipendentemente dai suoi figli.

Ecco come è possibile ottenere un attraversamento di directory che mostra la dimensione totale di ogni directory:

usando `du` con` find`:

Questo combina `Trova` per l'attraversamento e` du` per il calcolo delle dimensioni. `Find` elenca ogni directory e` Xargs` nutre quelle directory a `du`:

`` `Bash

Trovare . -Type D -print0 | xargs -0 -i {} du -sh {}

`` `

* `Trova. -Type d -print0`:questo trova tutte le directory (`-type d`) a partire dalla directory corrente (` .`) e stampa i loro nomi separati da caratteri null (`-print0`). I caratteri null sono cruciali per la gestione dei filesseggi con spazi o caratteri speciali.

* `xargs -0 -i {} Du -sh {}`:questo prende i nomi di file separati da null da `finish` e esegue` du -sh` su ognuno. `-0` dice a` xargs` di aspettarsi input separati null, `-i {}` set `{}` come segnaposto per il nome file, `Du -sh` mostra la dimensione in un formato leggibile dall'uomo (` -h`) e solo la dimensione sommaria (non la dimensione di ogni file all'interno) `-s`.

Questo è il più vicino a un attraversamento che ti dà esplicitamente le dimensioni di ogni directory. Il comando `du` stesso non è strettamente un algoritmo di attraversamento, ma se usato con` Trova`, la combinazione esegue l'azione desiderata.

 

sistemi © www.354353.com