Kann ich lange Dateinamen in der Liste abschneiden?

10

Ich habe eine Reihe von Dateien mit sehr langen Namen. Gibt es eine Möglichkeit, ls -C zu verwenden und die Dateinamen abzuschneiden, um mehr Spalten für eine Gesamtansicht zu erhalten?

Oder gibt es einen besseren Weg, um eine kompakte Liste zu erhalten?

Harry Weston
quelle

Antworten:

9

Sie könnten so etwas tun wie:

ls | cut -c1-20 | columns -W "${COLUMNS:-80}"

Beispiel für Spalten

(das ist columnsmit einem svon GNU autogen). Oder:

ls | cut -c1-20 | column -c"${COLUMNS:-80}"

Spaltenbeispiel Verwendung columnwie bei BSDs oder bei bsdmainutilsDebian oder seinen Derivaten.

zsh unterstützt auch das Drucken von Dingen in Spalten, sodass Sie eine Funktion wie die folgende definieren können:

setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"

Und benutze es als:

c 20 *.txt

Zum Drucken der Liste txt-Dateien in Spalten, abgeschnitten auf 20 Zeichen.

Und um es ein bisschen verrückter zu machen, könnten Sie hinzufügen:

command_not_found_handler() {(($1)) && c "$@"}

Auf diese Weise können Sie auch Folgendes tun:

20 *

Oder auch:

8+8 *

zsh Beispiel

Stéphane Chazelas
quelle
Genial, danke. Auf meinem Fedora 12-System habe ich das ls | verwendet Schnitt -c1-20 | Spalten -W "$ {COLUMNS: -80}" Zeile und alle meine Dateien auf einem Bildschirm.
Harry Weston
0

Unter der Annahme eines Bildschirms mit 80 Spalten verwende ich gerne

ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie ls -FCstattdessen, um nach Aktualität zu sortieren


(Nebenbemerkung: Ich scrolle lsbereits, weil es ein Alias ​​ist ls -CF --color | more -r. Ich bin mir nicht sicher, ob das die beste Vorgehensweise ist ...)

Atav32
quelle