Weiß jemand, wie man alle Ordner in einem Verzeichnis mit Größe, Ordner/Datei und Besitzer anzeigt?
Der einzige mir bekannte Befehl lautet: du -hs *
„Aber das zeigt auch alle Unterordner an, zeigt aber nicht den Besitzer.“
Ich möchte beispielsweise die Informationen zu Größe, Ordner/Datei und Besitzer des Ordners/der Datei unter „/my/path/“ erhalten.
Kennt jemand einen Befehl, der mir diese Informationen liefern könnte?
Br Hultman
Antwort1
Sie könnten den find
folgenden Befehl versuchen:
find /my/path -maxdepth 1 -type d -printf "%u %g " -exec du -h --max-depth=0 {} \;
-type d
soll alle Verzeichnisse (Filter ) eine Ebene unter dem Startpunkt /my/path
(Option ) finden -maxdepth 1
. Es wird dann
- Verwenden Sie die
-printf
Option zum Drucken von Eigentümer und Gruppe und dann - Rufen Sie es
du --max-depth=0
für jedes gefundene Verzeichnis auf ({}
), um unter Verwendung des Mechanismus den Namen und die Gesamtgröße direkt hinter der Ausgabe der vorhergehenden-printf
Option auszudrucken-exec
.
Antwort2
Hier habe ich einen einfachen Ausschnitt für Sie
#!/usr/bin/env bash
unset fname owner size i
for f in "$@"
do
fname[i]="$f"
owner[i]=$(stat -c %U "$f")
size[i++]=$(stat -c %s "$f")
done
for i in "${!fname[@]}"
do
printf "User %s owns %s and the size is %d Kbytes\n" "${owner[i]}" "${fname[i]}" $((${size[i]} / 1024))
done
Machen Sie das Skript ausführbar oder führen Sie es wie folgt aus: bash script_name [path]
chmod u+x script_name
Und führen Sie es aus
./script_name /my/path/*