Script zur Auflistung der Ordnersturkturgröße
Re: Script zur Auflistung der Ordnersturkturgröße
Thread geteilt, weil: Neue Frage -> neuer Thread.
Die andere Frage ist dort: http://debianforum.de/forum/viewtopic.php?f=8&t=116375
Die andere Frage ist dort: http://debianforum.de/forum/viewtopic.php?f=8&t=116375
Use ed once in a while!
Re: Script zur Auflistung der Ordnersturkturgröße
Code: Alles auswählen
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Aufruf: `basename $0` <Verzeichnis>"
exit 2
fi
printf "Dateien\tGröße\tVerzeichnis\n"
find "$1" -type d -execdir bash -c '
shopt -s dotglob;
dir=`readlink -f "$PWD/$1"`
size=`du -s "$1"|cut -f1`;
files=`printf "%s\n" "$1"/*|grep -v [*]|wc -l`
printf "%02d\t%s\t%s\n" "$files" "$size" "$dir"
' find-sh '{}' \;
wie kann man verhindern, das er die unterverzeichnisse mit ausgibt???
danke schonmal
gruß dave
Re: Script zur Auflistung der Ordnersturkturgröße
Hm, das Script soll nicht rekursiv durchsuchen? Dann könnte man den kompletten find-Aufruf rauswerfen. Quasi sowas hier:OnkelDave hat geschrieben: wie kann man verhindern, das er die unterverzeichnisse mit ausgibt???
danke schonmal
Code: Alles auswählen
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Aufruf: `basename $0` <Verzeichnis>"
exit 2
fi
shopt -s dotglob;
printf "Dateien\tGröße\tVerzeichnis\n"
dir=`readlink -f "$PWD/$1"`
size=`du -s "$1"|cut -f1`;
files=`printf "%s\n" "$1"/*|grep -v [*]|wc -l`
printf "%02d\t%s\t%s\n" "$files" "$size" "$dir"
Meine Whishlist
:wq!
:wq!
Re: Script zur Auflistung der Ordnersturkturgröße
moinsen,
also er soll schon alle ordner anzeigen die sich im verzeichniss befinden, nur nicht deren unterordner ausgeben...
könntest du nochmal so lieb sein und das ein wenig modifizieren?
langsam wird nen bier fällig
gruß dave
also er soll schon alle ordner anzeigen die sich im verzeichniss befinden, nur nicht deren unterordner ausgeben...
könntest du nochmal so lieb sein und das ein wenig modifizieren?
langsam wird nen bier fällig
gruß dave
Re: Script zur Auflistung der Ordnersturkturgröße
Nur kurz, weil keine Zeit:OnkelDave hat geschrieben:moinsen,
also er soll schon alle ordner anzeigen die sich im verzeichniss befinden, nur nicht deren unterordner ausgeben...
könntest du nochmal so lieb sein und das ein wenig modifizieren?
langsam wird nen bier fällig
gruß dave
Code: Alles auswählen
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Aufruf: `basename $0` <Verzeichnis>"
exit 2
fi
printf "Dateien\tGröße\tVerzeichnis\n"
find "$1" -maxdepth 1 -type d -execdir bash -c '
shopt -s dotglob;
dir=`readlink -f "$1"`
size=`du -s "$1"|cut -f1`;
files=`printf "%s\n" "$1"/"$i"/*|grep -v [*]|wc -l`
printf "%02d\t%s\t%s\n" "$files" "$size" "$dir"
' find-sh '{}' \;
Meine Whishlist
:wq!
:wq!
Re: Script zur Auflistung der Ordnersturkturgröße
ok jetzt hab ich nen echtes problem...
der befehl find, dauert ewig um 16tb durchzugehen...das script arbeitet so leider nicht korrekt
also die ausgabe in ein log file via cron gibt nix aus, wenn ich einen anderen ort wähle - der nicht ganz so groß ist, funktioniert es bestens!
könnte mir das jemand umschreiben, bin leider kein unix shell pro, was auf den befehl du -h bassiert.....damit läuft es einigermaßen schneller
danke im vorraus für eure power hilfe! ganz besonders meillo mein bester!
gruß david
----------------------------
ok jetzt kommt der burner, das sind sooo viele dateien und die größe lassen wir mal außenvor
jetzt kommen langsam aber sicher die einträge von dem script.....leider erst 50minuten danach
dann widerruf ich mich und sag alles in ordnung, wenn es jetzt eine möglichkeit gibt cron zu sagen, dass er es erst 2 h später per mail versenden soll oder am besten warten soll bis das script durchgelaufen ist!
und was auch noch super wäre, wenn er das datum mit in den dateinamen des logs schreibt, damit er es nächsten tag nicht überschreibt.
gibs da eine möglichkeit??????
DANKE SCHONMAL
der befehl find, dauert ewig um 16tb durchzugehen...das script arbeitet so leider nicht korrekt
also die ausgabe in ein log file via cron gibt nix aus, wenn ich einen anderen ort wähle - der nicht ganz so groß ist, funktioniert es bestens!
könnte mir das jemand umschreiben, bin leider kein unix shell pro, was auf den befehl du -h bassiert.....damit läuft es einigermaßen schneller
danke im vorraus für eure power hilfe! ganz besonders meillo mein bester!
gruß david
----------------------------
ok jetzt kommt der burner, das sind sooo viele dateien und die größe lassen wir mal außenvor
jetzt kommen langsam aber sicher die einträge von dem script.....leider erst 50minuten danach
dann widerruf ich mich und sag alles in ordnung, wenn es jetzt eine möglichkeit gibt cron zu sagen, dass er es erst 2 h später per mail versenden soll oder am besten warten soll bis das script durchgelaufen ist!
und was auch noch super wäre, wenn er das datum mit in den dateinamen des logs schreibt, damit er es nächsten tag nicht überschreibt.
gibs da eine möglichkeit??????
DANKE SCHONMAL
Re: Script zur Auflistung der Ordnersturkturgröße
ok, 16tb sind schon heftig. Das kann natürlich dauern, das zählen und summieren, abhängig auch davon, ob du eher viele kleine oder weniger große Dateien hast. Hier mal eine Version, die sich den find-Aufruf spart:OnkelDave hat geschrieben:ok jetzt hab ich nen echtes problem...
der befehl find, dauert ewig um 16tb durchzugehen...das script arbeitet so leider nicht korrekt
also die ausgabe in ein log file via cron gibt nix aus, wenn ich einen anderen ort wähle - der nicht ganz so groß ist, funktioniert es bestens!
Code: Alles auswählen
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Aufruf: `basename $0` <Verzeichnis>"
exit 2
fi
shopt -s nullglob;
shopt -s dotglob;
j=1
for i in "$1"/*; do
if [ $j -eq 1 ]; then
printf "Dateien\tGröße\tVerzeichnis\n"
fi
j=$(( $j + 1 ))
size=`du -sb "$i"`
files=`printf "%s\n" "$i"/*|wc -l`
printf "%02d\t%s\n" "$files" "$size"
done
Tja, ist i/o-bound. Da wirst Du mit shell nicht viel machen können.könnte mir das jemand umschreiben, bin leider kein unix shell pro, was auf den befehl du -h bassiert.....damit läuft es einigermaßen schneller
Cron müßte doch mit dem output warten, bis alles fertig ist, oder läuft mail da in einen Timeout?ok jetzt kommt der burner, das sind sooo viele dateien und die größe lassen wir mal außenvor
jetzt kommen langsam aber sicher die einträge von dem script.....leider erst 50minuten danach
dann widerruf ich mich und sag alles in ordnung, wenn es jetzt eine möglichkeit gibt cron zu sagen, dass er es erst 2 h später per mail versenden soll oder am besten warten soll bis das script durchgelaufen ist!
Wie ruftst Du das Script auf? und in welchem Format hättest Du denn das Datum gern im Logfile?und was auch noch super wäre, wenn er das datum mit in den dateinamen des logs schreibt, damit er es nächsten tag nicht überschreibt.
gibs da eine möglichkeit??????
Meine Whishlist
:wq!
:wq!
Re: Script zur Auflistung der Ordnersturkturgröße
EH einfach Spitze!
DANKE schonmal!
Die mails laufen in ein Timeout bzw werden in dem Fall leer verschickt
Das Datumformat ist echt egal, nur damit die LogFiles sich nicht überschreiben und man sie zuordnen kann...
Grüße DAvid
DANKE schonmal!
Die mails laufen in ein Timeout bzw werden in dem Fall leer verschickt
Das Datumformat ist echt egal, nur damit die LogFiles sich nicht überschreiben und man sie zuordnen kann...
Grüße DAvid
Re: Script zur Auflistung der Ordnersturkturgröße
In deinem Aufruf des Scripts, machst Du ja wahrscheinlich sowas:OnkelDave hat geschrieben: Das Datumformat ist echt egal, nur damit die LogFiles sich nicht überschreiben und man sie zuordnen kann...
script.sh > logfile
Das änderst Du in
script.sh > logfile_`date +'%Y%m%d'`
Achtung ` sind Backtickes und keine normalen Apostrophen Zeichen.
Meine Whishlist
:wq!
:wq!
Re: Script zur Auflistung der Ordnersturkturgröße
Deshalb lieber $() benutzen. Siehe auch hier.chrisbra hat geschrieben: Achtung ` sind Backtickes und keine normalen Apostrophen Zeichen.
Re: Script zur Auflistung der Ordnersturkturgröße
hallo,
könnte mir einer erklären was ich ändern müsste für eine Gigabyte anzeige und keine Byte
so ist es einfach bei meheren Terrabytes eine zu lange zahl
DANKE im vorraus
GRÜßE dave
könnte mir einer erklären was ich ändern müsste für eine Gigabyte anzeige und keine Byte
Code: Alles auswählen
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Aufruf: `basename $0` <Verzeichnis>"
exit 2
fi
shopt -s nullglob;
shopt -s dotglob;
j=1
for i in "$1"/*; do
if [ $j -eq 1 ]; then
printf "Dateien\tGröße\tVerzeichnis\n"
fi
j=$(( $j + 1 ))
size=`du -sb "$i"`
files=`printf "%s\n" "$i"/*|wc -l`
printf "%02d\t%s\n" "$files" "$size"
done
DANKE im vorraus
GRÜßE dave
Re: Script zur Auflistung der Ordnersturkturgröße
ach da fällt mir doch was ein.....du -sh ist es...hab ich recht?
sitz hier an einem doofi system nix unix shell
DANKE
sitz hier an einem doofi system nix unix shell
DANKE
Re: Script zur Auflistung der Ordnersturkturgröße
Code: Alles auswählen
-h, --human-readable
Ausgabe der Größen in menschenlesbarem Format. (z.B. 1K 234M 2G)
henry