Groesse von Dateien auswerten

T

thierry

Grünschnabel
hallo,
habe bitte seit einigen Stunden ein Problem.
Mit dem Kommando du -s * kann man alle Verzeichnisse und Dateien des aktuellen Verzeichnis ausgeben(auf Konsole). Das Problem beim Schreiben eines Skriptes, das dies tun soll, wie kann ich die Groeße einer Datei von der Datei selbst trennen?
Beispiel: du -s * listet bei mir folgendes:
224 Coursshell.pdf
3 Network.desktop
1 OpenOffice.org.desktop
1 Printer.desktop
1 SHELLDATEI
8 Script.C++.Struktur.Nachteile.htm
1 Shellprog
1 SuSE.desktop
1 Support.desktop
41 Trash
3 Vorl.WS04%2f05
1 calc
1 chkfile
1 countc1
1 countc2
1 counter
1 good
1 hallo1
__________________
Ja ich weiß es gibt Leerzeichen zwischen Groeße und Name aber ist das wirklich ein(oder mehrere)
Leerzeichen:hilfe2: :hilfe2:
 
lies dich mal in regular expressions ein.

das sind bei der bash afair die gleichen wie in perl.

der regex der dir die dateien und die größe erkennt wäre:

Code:
^(\d+)(\s+)(\w+)

nun kannst du auf die erste gruppe (\d+ == erkenne ein oder mehr numerische zeichen) über $1 zugreifen, auf die zweite über $2 usw.

wenn dir das alles gar nichts sagt, wie schon erwähnt, lies ein paar gute tutorials über regexes. seitdem ich programmiere gibt es (fast) keinen tag wo ich die nicht benötige.
 
Hallo

Reguläre Ausdrücke sind zwar sehr nützlich, aber sie sind auch teuer!
Man sollte sie also nur verwenden, wenn es wirklich Sinn macht , bzw. andere "billigere" Möglichkeiten ausscheiden.

Im Falle der Dateigröße könnte auch cut eine Option sein.

Wer GNU find nutzt, kann sich auch mal die Option printf "SCHEMA" ansehen.
Code:
find /path/ -maxdepth 1 -type f -printf "%s\n" # liefert nur die Größe in Byte aller Dateien des aktuellen Verzeichnisses 

# Anderes Beispiel
du -sh *|while read SIZE NAME;
do
echo "$NAME hat $SIZE Byte";
#mach was mit $SIZE
done

Beide Beispiele vermeiden zusätzliche Prozesse wie awk usw.
Als Trennzeichen wird IFS (default [:space:], \n \t) verwendet.
Auch das ist manipulierbar.

man find
man cut
help read

Gruß Wolfgang
 
Zuletzt bearbeitet:

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

find Ausgabe in "Anführungszeichen"

Wie bewegt Ihr zügig große Datenmengen von A nach B?

Mehrere Verzeichnisse nach best. Dateien/Verz. durchsuchen

Gleicher Befehl über Script -> Fehler?

Zurück
Oben