Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Unix

Ποιο traversal υπολογίζει το συνολικό μέγεθος κάθε καταλόγου στο σύστημα UNIX;

Καμία από τις τυποποιημένες μεθόδους Unix Traversal (όπως το `Find ',` LS` ή το `Tree') Υπολογίστε άμεσα το συνολικό μέγεθος κάθε καταλόγου σε μία μόνο εντολή. Συνήθως δείχνουν το μέγεθος των αρχείων μέσα σε έναν κατάλογο, αλλά όχι το αναδρομικό άθροισμα των μεγεθών όλων των αρχείων και των υποκαταλόγων εντός αυτού του καταλόγου.

Για να υπολογίσετε το συνολικό μέγεθος κάθε καταλόγου, θα χρησιμοποιούσατε συνήθως `du` (χρήση δίσκου). Ωστόσο, το `du` δεν είναι εγγενώς" traverse "με την έννοια της επίσκεψης σε κάθε κατάλογο και εκτυπώνει το όνομα και το μέγεθος του ξεχωριστά. Αναφέρει το μέγεθος κάθε καταλόγου, *συμπεριλαμβανομένων των υποκαταλόγων του *, η οποία είναι διαφορετική από μια διαδρομή που θα απαριθμήσει ρητά κάθε κατάλογο και το μέγεθος του ανεξάρτητα από τα παιδιά του.

Δείτε πώς μπορείτε να επιτύχετε μια διαδρομή καταλόγου που δείχνει το συνολικό μέγεθος κάθε καταλόγου:

Χρησιμοποιώντας το `du` με` find`:

Αυτό συνδυάζει το `Find 'για το traversal και το` du` για τον υπολογισμό του μεγέθους. Οι λίστες "Find" σε κάθε κατάλογο και το «Xargs» τροφοδοτεί αυτούς τους καταλόγους στο «du»:

`` `bash

Βρείτε. -Type d -print0 | xargs -0 -i {} du -sh {}

`` `

* Βρείτε. -Type d -print0`:Αυτό βρίσκει όλους τους καταλόγους (`-type d`) ξεκινώντας από τον τρέχοντα κατάλογο (`. ') και εκτυπώνει τα ονόματά τους που χωρίζονται από μηδενικούς χαρακτήρες (`-print0`). Οι μηδενικοί χαρακτήρες είναι ζωτικής σημασίας για το χειρισμό ονόματα αρχείων με χώρους ή ειδικούς χαρακτήρες.

* `xargs -0 -i {} du -sh {}`:Αυτό παίρνει τα null -διαχωρισμένα ονόματα αρχείων από το `Find` και τρέχει` du -sh 'σε κάθε ένα. `-0` λέει` xargs` να περιμένει null-διαχωρισμένη είσοδο, `-i {}` Sets `{}` Ως σύμβολο κράτησης για το όνομα αρχείου, `du -Sh` δείχνει το μέγεθος σε μια μορφή που μπορεί να διαγνωσθεί από τον άνθρωπο (` -h`) και μόνο το μέγεθος (όχι το μέγεθος του αρχείου) `-s.

Αυτό είναι το πλησιέστερο που θα φτάσετε σε μια διαδρομή που σας δίνει ρητά το μέγεθος κάθε καταλόγου. Η ίδια η εντολή `du` δεν είναι αυστηρά ένας αλγόριθμος traversal, αλλά όταν χρησιμοποιείται με το` Find ', ο συνδυασμός εκτελεί την επιθυμητή δράση.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα