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

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

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

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.


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/'

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.