Schneller Hack:
#!/bin/sh 7z l "$" |\ tail -n +17 |\ sed 's/.\//' |\ tac |\ awk 'NR>2 { n=split($6, a, "/") print a[n] }'
Speichern unter 7ztree
, verwenden als
$ 7ztree archive.7z jsloader resource gre modules NetworkHelper.jsm CommonDialog.jsm jsdebugger.jsm CertUtils.jsm DownloadPaths.jsm FileUtils.jsm source-editor-textarea.jsm
tail
wird zum Entfernen irrelevanter Informationen verwendet.17
hier und dort waren53
fürsed
und2
fürawk
mindestens die korrekten magischen Zahlen auf meiner 7-zip-Version.sed
Die ersten magischen 53 Zeichen werden entfernt (dies verbessert die Handhabung von Leerzeichenawk
).tac
wird verwendet, um die Eingabe umzukehren (andernfalls würde der Baum auf die Weise stehen, wie 7z die Auflistung darstellt).
Es ist unkompliziert, aber eigenartig, Logik hinzuzufügen, um die gleiche fantastische Ausgabe zu erhalten tree
.
awk
Es könnte verwendet werden, um Zeilen in einem einzigen Befehl anstelle von tail
und zu filtern und umzukehren tac
, aber es wäre etwas komplizierter.
BEARBEITEN:sed
Zum besseren Umgang mit Leerzeichen hinzugefügt . Und in diesem Sinne eine reine sed
Version mit derselben Ausgabe wie das obige Skript in seiner aktuellen Form:
#!/bin/sh 7zr l ../testing.7z |\ tail -n +17 |\ tac |\ tail -n +3 |\ sed 's/.\//; s#[^/]*/# #g'
Aber es wird nicht leicht sein, eine schönere Ausgabe zu erhalten.
EDIT2: Und einige Golf Perl ! :-D
#!/usr/bin/perl my @lines; my $i=0; while(<>) for my $i (reverse 0..$#lines-2)
Wenn man einige Zeilenumbrüche hinzufügt, ist dies wahrscheinlich der einfachste Weg, um eine schöne Ausgabeformatierung zu erstellen.