Listen Sie nur die Dateigröße, den Namen und die Symlinks auf

8

Wenn ich benutze, ls -lahbekomme ich viele Informationen für jede Datei.

Wie kann ich nur den Namen und die Dateigröße erhalten?

Zusätzlich möchte ich die Liste der Symlinks mit dem Pfeil wie behalten

lrwxrwxrwx  1 rubo77    rubo77       4 Nov 21 01:53 test2 -> test
rubo77
quelle

Antworten:

5

Auswählen von Spalten, die mit awk gedruckt werden sollen

Eine Methode wäre, die Ausgabe von zu analysieren ls.

Beispiel

$ ls -lah | awk '{print $9, $5}' | tail -5
.yEd 4.0K
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K

Übrigens können Sie die Ausgabe mit bereinigen column.

$ ls -lah | awk '{print $9, $5}' | column -t | tail -5
z                                                   4
.youtube-dl                                         4.0K
.zenmap                                             4.0K
.zshrc                                              32
zzzz                                                3.3K

Spalten auswählen, die mit awk entfernt werden sollen

Wenn Sie lieber die anderen Spalten entfernen möchten, während Sie andere beibehalten, können Sie diese awkMethode verwenden, um die unerwünschten Spalten auszublenden.

Beispiel

$ ls -lah | awk '{$1=$2=$3=$4=$6=$7=$8=""}1' | tail -5
    4.0K    .youtube-dl
    4    z -> zzzz
    4.0K    .zenmap
    32    .zshrc
    3.3K    zzzz

Endgültige Lösung

Das OP hat diese Befehlskette anhand einer Mischung der obigen Beispiele entwickelt.

$ ls -lah | awk '{print $5, $9$10$11}' | column -t | column 
...
4.0K  .gphoto              773   .rdebug_hist     4.0K  .youtube-dl
1.5K  .grip                4.0K  .rdesktop        4     z->zzzz
slm
quelle
cool, wenn ich benutze, ls -lah | awk '{print $5, $9$10$11}'|columnbekomme ich was ich wollte
rubo77
@ rubo77 - siehe Updates für eine andere Methode, um auch die unerwünschten Spalten auszublenden.
slm
Sie sollten jede Zeile column
kürzen
Ihre awk-Strategie bewahrt die Ausrichtung nicht. Diejenigen, die Spalteneinschlüsse verwenden, kürzen Dateinamen, die Leerzeichen enthalten. Derjenige mit Spaltenentfernung hat diesen Defekt nicht. Das Weiterleiten in einen anderen Befehl unterdrückt auch die Farben, die viele Benutzer verwenden.
Gilles 'SO - hör auf böse zu sein'
Wenn Sie Dateien mit führenden oder nachfolgenden Leerzeichen erwarten, können Sie ls -lahQstattdessen Dateinamen zitieren
rubo77
2

Von der Manpage:

  -s, --size
          print the allocated size of each file, in blocks

Also für vom Menschen lesbare Größen:

ls -sh
ssch
quelle
Ich habe danach gesucht, um eine Lösung zu finden. Wie kann ich alle Dateien und Symlinks in einer kompakten Ansicht auflisten? Das sieht also vielversprechend aus, zeigt aber nicht die Symlink-Ziele, wie ich es mir erhofft hatte, wie es ls-lah tut. (Ich habe dies der Frage hinzugefügt)
rubo77
Wenn Sie auch versteckte Dateien sehen möchten, verwenden Siels -ash
rubo77
2

Eine schnelle und schmutzige Möglichkeit besteht darin, die Ausgabe von ls -lahmit ein paar anderen Befehlen zu kombinieren :

ls -lah | tr -s ' ' | cut -d' ' -f5,9-

Der tr -sBefehl ersetzt mehrere Leerzeichen durch einzelne Leerzeichen und cut -d' ' -f5,9-druckt die Spalten 5 und 9 (und darüber hinaus). Dies 9-ist erforderlich, um zusätzliche durch Leerzeichen getrennte Spalten zu berücksichtigen, die durch Symlinks erzeugt werden.

Greg Hewgill
quelle
Wenn ich versuche zu kolonisieren, dass Symlinks am Pfeil gestreckt werden:ls -lah | tr -s ' ' | cut -d' ' -f5,9- | column -t | column
rubo77
Nun, Ihre Frage sagt nichts über das Drucken in Spalten aus.
Greg Hewgill
Sie haben Recht, das hing nur mit meiner anderen Frage zusammen: Wie kann ich alle Dateien und Symlinks in einer kompakten Ansicht auflisten?
Rubo77
1

Das Beste, was Sie nur erreichen können, lsist, die Benutzer- und Gruppenspalten mit zu unterdrücken ls -log. Wenn Sie weiter gehen möchten, können Sie die Ausgabe analysieren. Beachten Sie, dass die zweite Spalte (die Anzahl der Links) eine variable Breite hat. Das folgende Shell-Snippet achtet darauf, die Spaltenausrichtung beizubehalten, mit beliebigen Dateinamen umzugehen (mit Ausnahme von Zeilenumbrüchen, wenn diese wörtlich übergeben werden) und die Ausgabe in Farbe anzuzeigen (entfernen Sie diesen Teil, wenn Sie keine GNU-Coreutils ausführen).

if [ -t 1 ]; then color=yes; else color=no; fi
ls -h -log --color="$color" | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'
Gilles 'SO - hör auf böse zu sein'
quelle
Ist es möglich, diese Spalte wie ls ohne Optionen zu erhalten?
rubo77
@ rubo77 Spalten spielen nicht so gut mit der Anzeige von Symlink-Zielen, die dazu neigen, ziemlich breit zu werden. Wenn Sie es wirklich wollen, ist das Durchleitencolumn der richtige Weg.
Gilles 'SO - hör auf böse zu sein'
Diese Antwort ist auch in Ordnung, Sie könnten verwenden:ls -halog --color=no | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'|column
rubo77
aber slms Antwort mit awkist leichter zu merken
rubo77