So ordnen Sie Dateien nach Datum in der Tab-Abschlussliste

9
$ 7z l ~ / Downloads /Tab

Wie kann die resultierende Liste nach Datum und nicht nach Namen sortiert werden?

Ich verwende derzeit ein spezielles Skript, um N die neuesten Dateien in einem bestimmten Verzeichnis aufzulisten (und den Dateinamen manuell in die Befehlszeile zu kopieren), möchte ihn aber nahtlos und bequemer gestalten.

Vi.
quelle
4
Einfach in zsh . Ich weiß nicht, ob es in Bash möglich ist.
Gilles 'SO - hör auf böse zu sein'
Möchten Sie nur die nach Datum aufgelisteten Dateien anzeigen oder möchten Sie sie irgendwie in der Reihenfolge des Datums zum Archiv hinzufügen?
Terdon
Es gibt viele verschiedene Dateien im Verzeichnis "Downloads", und ich möchte auf die kürzlich heruntergeladene Datei zugreifen (möglicherweise entpacken, möglicherweise irgendwohin verschieben usw.).
Vi.

Antworten:

2

Ich glaube nicht, dass das möglich bashist, also könnten Sie es ausprobieren zsh. Ich bin zwar kein zsh-Benutzer, aber ich denke, diese Konfiguration sollte funktionieren:

autoload -U compinit
compinit
zstyle ':completion:*' file-sort modification reverse

( reverseHier sehen Sie die neuesten Dateien am Ende der Liste, da der obere Teil möglicherweise nicht auf dem Bildschirm sichtbar ist.)

David Ongaro
quelle
0

Gelegentlich muss ich die zuletzt heruntergeladene Datei in meinem Download-Verzeichnis finden, kenne aber möglicherweise nicht den genauen Dateinamen. Hier ist, wie ich es mache.

ls -rt ~/Downloads

ls -tlistet die Dateien nach Zeit und nicht nach Name auf, wobei die aktuellste zuerst angezeigt wird. Da mein Download-Verzeichnis so viele Dateien enthält, möchte ich nicht zum Anfang der Liste scrollen, um die neuesten zu sehen. ls -rtKehrt die Reihenfolge der Liste um und zeigt die neueste Datei am Ende der Liste an.

Von dort aus können Sie ganz einfach das tun, was Sie brauchen. Zum Beispiel:

unzip $(ls -rt ~/Downloads | tail -n1)

oder

mv $(ls -rt ~/Downloads | tail -n1) *some_other_location*

Ihre ursprüngliche Frage könnte folgendermaßen gestellt werden:

7z l $(ls -rt ~/Downloads | tail -n1)

Mir ist klar, dass dies nicht der Tab-Vervollständigungsmethode entspricht, aber möglicherweise für Ihre Anforderungen geeignet ist.

Timothy Martin
quelle
Speichert nicht das Tippen. Eigentlich habe ich schon ein Skript damit rlzu ls -lhtc "$@" | head -n $Ntun.
Vi.
Die Frage ist, wie dieses oder ein anderes Skript in die Registerkarte <kbd> </ kbd> eingebunden werden kann, damit nahtlos gedacht werden kann.
Vi.
Ihr Snippet neigt auch dazu, bei einigen kniffligen Dateinamen zu brechen, wie es für heruntergeladene Dateien typisch ist.
Vi.
0

Ich werde die folgenden Schritte dafür ausführen

  1. First I will find the files and their timestamps
  2. Sort them reversely
  3. Take top N
  4. Get the filenames
  5. Zip it or do whatever u like

Und das Skript sieht so aus (kann komplex sein)

find ~/Downloads/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -N | cut -d' ' -f3 | xargs 7z l
Pappu
quelle
Ich habe bereits ein ähnliches Skript mit dem Namen rl(aktuelle Liste). Aber ich muss es explizit aufrufen, dann kopieren und einfügen. Ich möchte, dass es stärker in die Tab-Vervollständigung integriert wird.
Vi.
-1

In Bash können Sie etwas in die Nähe bringen, indem Sie beispielsweise

7z l ~/Downloads/Alt+n

Wo bindhat kartiert Alt+nauf eine Funktion, die umschreibt READLINE_LINEVariable.

Um die Tab-Vervollständigung zu approximieren, mache ich dies mit einem Argument-Parsing-Perl-Kludge und fzfzur Darstellung eines Menüs.

https://github.com/WillForan/fuzzy_arg/blob/master/fuzzy_new_complete.bash

Wille
quelle