• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

ls spalten ausgabe bestimmen

carcophan

Newbie
kurz vorweg: Aus der manual page zu ls werde ich nicht schlau, in der Forum Suche habe ich auch nichts zutreffendes gefunden und Google liefert immer nur Links zu ls manual pages:

und jetzt zu meiner Frage:

ich möchte die Ausgabe von ls so konfigurieren, dass ich nur 2 Spalten als ausgabe bekomme, und zwar einmal die Zugriffsrechte und einmal die Datei/Verzeichnis.

z.B.
Code:
-rwx------ hallo.txt
drwx------ verzeichnis
usw

ist das überhaupt machbar mit einer kombination aus ls Flags und Parameter ohne die Ausgabe anschliessend parsen zu müssen?
Wenn ja, wie geht das?[
 

TeXpert

Guru
ls ist ein gnu-Tool, da finden sich detailliertere informationen IDR in den Info-Seiten... aber bei diesem konkreten Problem ist mir auch keine Kombination bekannt, aber die Infos können ja aus ls extrahiert werden,

Code:
ls -l | cut -d " " -f 1,9-
dürfte tun, was Du willst

an sich ist ja awk prädestiniert dafür, ... aber das Problem bei
Code:
ls -l | awk ' {print $1, $8 }'
ist, dass Namen mit Leerzeichen nicht mitkommen :( die werden halt abgeschnitten... (ich hab spontan keine erinnerung, ob das ohne explizite Schleife mit einer unbestimmten Feldmenge klappt...)

der Unterschied 8 und 9 kommt daher, dass cut die gesamte Ausgabe betrachtet und damit auch die erste Zeile berücksichtigt und die bringt u.u. noch ein anderes Leerzeichen rein, als Workaround:
Code:
ls -l | tac | head -n-1 | tac | cut -d " " -f 1,8-
 

regexer

Advanced Hacker
TeXpert schrieb:
Workaround:
Code:
ls -l | tac | head -n-1 | tac | cut -d " " -f 1,8-
Mal was anderes: Warum die zwei mal tac? Und das von einem Gegner der useless processes? :wink: Wenn ich dich richtig verstehe dürfte es ein tail +2 auch tun. BTW: Dieser head funktioniert nicht unter SLES 8.

Es sei außerdem gesagt, dass die Ausgabe von ls (gerade bei der Zeitangabe) höchst unterschiedlich sein kann. Das könnte auch noch zu Problemem führen...
 

TeXpert

Guru
notoxp schrieb:
TeXpert schrieb:
Workaround:
Code:
ls -l | tac | head -n-1 | tac | cut -d " " -f 1,8-
Mal was anderes: Warum die zwei mal tac? Und das von einem Gegner der useless processes? :wink:

in diesem Fall könnte man das natürlich weglassen, aber wenn man die gleiche Reihenfolge haben will :) dann halt wieder umdrehen.

Wenn ich dich richtig verstehe dürfte es ein tail +2 auch tun.
stimmt :) ein +2 tut das gleiche und spart die tacs... ich hab in dem Moment hier mit head rumgemacht daher war das so drin ;)

BTW: Dieser head funktioniert nicht unter SLES 8.
Code:
$ head --version
head (coreutils) 5.2.1
Geschrieben von David MacKenzie und Jim Meyering.

Copyright (C) 2004 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quelltexten. Es
gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.

Es sei außerdem gesagt, dass die Ausgabe von ls (gerade bei der Zeitangabe) höchst unterschiedlich sein kann. Das könnte auch noch zu Problemem führen...
hier könnte man dann IMHO mit den entsprechenden locale-Einstellungen gegensteuern... aber die Ausgabe ist pro Maschine im Prinzip ja gleich.

Wenn das unabhängig der locale sein soll, kann man natürlich auch noch die Zeit-Ausgabe entsprechend manuell formatieren (info coreutils ls)
 

regexer

Advanced Hacker
TeXpert schrieb:
Es sei außerdem gesagt, dass die Ausgabe von ls (gerade bei der Zeitangabe) höchst unterschiedlich sein kann. Das könnte auch noch zu Problemem führen...
hier könnte man dann IMHO mit den entsprechenden locale-Einstellungen gegensteuern... aber die Ausgabe ist pro Maschine im Prinzip ja gleich.
Also ich hatte schon mal ein Problem mit den Zeit-Formatierungen. Aber so könnte man es lösen (zumindest ab SuSE 8 ):
Code:
ls -og --time-style="+"
So kommt man doch schon ziemlich nahe an die Aufgabenstellung...

Nachtrag:
Code:
$ head --version
head (textutils) 2.1
Geschrieben von David MacKenzie.

Copyright (C) 2002 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.
 

TeXpert

Guru
notoxp schrieb:
TeXpert schrieb:
Es sei außerdem gesagt, dass die Ausgabe von ls (gerade bei der Zeitangabe) höchst unterschiedlich sein kann. Das könnte auch noch zu Problemem führen...
hier könnte man dann IMHO mit den entsprechenden locale-Einstellungen gegensteuern... aber die Ausgabe ist pro Maschine im Prinzip ja gleich.
Also ich hatte schon mal ein Problem mit den Zeit-Formatierungen.
die Du nicht durch explizites setzen der loacla ändern konntest? denn ein
Code:
LC_TIME ls -l
sollte nach meinem Verständnis ja überall das gleiche Verhalten haben... (OK, bei Unterschieden im ls mag das anders sein, d.h. andere Formate je nach locale ...)

Aber so könnte man es lösen (zumindest ab SuSE 8 ):
Code:
ls -og --time-style="+"
So kommt man doch schon ziemlich nahe an die Aufgabenstellung...

ja das könnte schon mal helfen (da ist dann nicht mehr so viel abzuschneiden :))

das witzige daran ist:
Code:
$ ls --version
ls (coreutils) 5.2.1
Geschrieben von Richard Stallman und David MacKenzie.
jetzt:
man ls schrieb:
aber:
info coreutils ls schrieb:
`-g'
Produce long format directory listings, but don't display owner
information.
 
Oben