[gelöst] Dateigröße in Variable?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Jerry
Beiträge: 665
Registriert: 01.09.2006 08:36:45
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home

[gelöst] Dateigröße in Variable?

Beitrag von Jerry » 27.11.2007 10:35:43

Moin,
Ich stehe grad auf dem Schlauch, dehalb meine Frage:
Wie kann man die Dateigröße welche mit ls -la ausgegeben wird mittels sed in eine Variable holen?

Danke im voraus
Wolf
Zuletzt geändert von Jerry am 27.11.2007 11:14:35, insgesamt 1-mal geändert.
Selbst der längste Weg beginnt mit dem ersten Schritt Lao Tse (~ 600-400 v. Chr.)

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 27.11.2007 10:40:59

Es geht auch so wie du dir das vorstellst, ich gebe dir aber mal einen einfacheren Lösungsansatz:

Code: Alles auswählen

size=`stat -c %s "$filename"`

Benutzeravatar
Jerry
Beiträge: 665
Registriert: 01.09.2006 08:36:45
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home

Beitrag von Jerry » 27.11.2007 10:51:05

Danke, aber stat steht in dem Fall nicht zur Verfügung, nur sed.

Gruß
Wolf
Selbst der längste Weg beginnt mit dem ersten Schritt Lao Tse (~ 600-400 v. Chr.)

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 27.11.2007 11:03:41

Auch kein cut oder awk?

Code: Alles auswählen

ls -l Dateiname | awk '{ print $5 }'
ls -l Dateiname | cut -d ' ' -f5

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 27.11.2007 11:06:09

Wie stehts denn dann mit awk?

Code: Alles auswählen

size=`ls -la "$filename" | awk '{print $5}'`
Und wenns dann doch unbedingt sed sein muss, dann bleibt nur noch so was:

Code: Alles auswählen

size=`ls -la "$filename" | sed -re 's/^([^ ]+[ ]+){4}([^ ]+)[ ]+.*$/\2/'`

Benutzeravatar
Jerry
Beiträge: 665
Registriert: 01.09.2006 08:36:45
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home

Beitrag von Jerry » 27.11.2007 11:11:38

Spasswolf hat geschrieben:Auch kein cut oder awk?

Code: Alles auswählen

ls -l Dateiname | awk '{ print $5 }'
ls -l Dateiname | cut -d ' ' -f5
Das geht nicht, liegt aber an meiner sh (msh unter busybox). Unter bash gehts. Trotzdem Danke!

Das folgende würde gehen aber tr ist fehlerhaft in der busybox.

Code: Alles auswählen

ls -l /etc/bash.bashrc | tr -s " " | cut -d " " -f 5
Gruß
Wolf
Selbst der längste Weg beginnt mit dem ersten Schritt Lao Tse (~ 600-400 v. Chr.)

Benutzeravatar
Jerry
Beiträge: 665
Registriert: 01.09.2006 08:36:45
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home

Beitrag von Jerry » 27.11.2007 11:13:52

markus_b hat geschrieben: Und wenns dann doch unbedingt sed sein muss, dann bleibt nur noch so was:

Code: Alles auswählen

size=`ls -la "$filename" | sed -re 's/^([^ ]+[ ]+){4}([^ ]+)[ ]+.*$/\2/'`
Danke das hat funktioniert.

Gruß
Wolf

Edit: Mir ist meine alte Lösung wieder eingefallen. tr durch sed ersetzen udn schon gehts auch. :-)

Code: Alles auswählen

ls -la /etc/passwd  | sed s/" "*/" "/g | cut -d " " -f6
Selbst der längste Weg beginnt mit dem ersten Schritt Lao Tse (~ 600-400 v. Chr.)

Antworten