2016-05-17 8 views
2

Wenn der Wortlaut der Frage falsch ist, lass es mich wissen. Es könnte erklären, warum ich keine Antwort finden kann.Linux du Befehl ohne durchlaufende Dateisysteme

Ich möchte die Verwendung auf meinem Haupt-Festplatte zu finden, einen Befehl wie mit:

du -sh /* 

Das Problem ist, dass ich eine Reihe von Bereitstellungspunkte auf Root-Ebene haben, und ich möchte du diese überspringen .

Ich dachte, die -x Option sollte dies tun, aber entweder verstehe ich falsch, was es tut, oder ich verwende es falsch.

Wie kann ich du nur auf die Root-Festplatte anwenden, ohne die zusätzlichen Halterungen zu durchlaufen?

Dank

+0

Mit anderen Worten, suchen Sie nach der zusammenfassenden Verwendung von '/ bin','/etc' und anderen Ordnern unter '/', während '/ run','/proc/','/sys' ausgeschlossen sind, und so weiter? – jamieguinan

+0

Ich habe auch zusätzliche Laufwerke bei '/ data' und'/backup' und so weiter, aber das ist im Grunde richtig. – Manngo

+0

Ich denke, Sie verwenden 'du' richtig, das Problem ist, dass'/* 'erweitert wird, um jeden Einhängepunkt unter'/'einzuschließen, dann" du "iteriert über jedes, was die' -x' Verwendung vereitelt. Der einzige Weg, dies zu lösen, könnte ein kreatives Skript sein. – jamieguinan

Antwort

2

Dies ist hacky, aber es scheint zu tun, was Sie wollen, aus der Schale,

for d in /*; do egrep " ${d} " /proc/mounts > /dev/null || du -sh ${d}; done 

ein sudo vor den du hinzufügen, wenn nötig.

+0

Entschuldigung, es hat mich so lange gebraucht, das zu akzeptieren. Dein Kommentar oben, denke ich, erklärt, warum das '-x' nicht funktioniert, und deine Antwort ist eine Lösung. In meinem eigenen Gebrauch habe ich es wie folgt geändert: 'for i in/*; machen Sie als ob ! Mountpoint -q "$ i"; dann du -sh $ i; fi; fertig; '. Vielen Dank – Manngo

5

du -x wird durchqueren keine Einhängepunkte es trifft. Aber wenn es an an einem Mount-Punkt gestartet wird, dann wird es wie gewünscht tun.