Jak zamawiać pliki według daty na liście wypełnień kart

9
7 $ l ~ / Pliki do pobrania /Tab

Jak sprawić, by powstała lista była sortowana według daty, a nie według nazwy?

Obecnie używam specjalnego skryptu, aby wyświetlić N najnowszych plików w danym katalogu (i ręcznie skopiować nazwę pliku do wiersza poleceń), ale chcę, aby był płynny i wygodniejszy.

Vi.
źródło
4
Łatwy w Zsh . Nie wiem czy to możliwe w bashu.
Gilles „SO- przestań być zły”
Czy chcesz po prostu zobaczyć pliki na liście według daty, czy chcesz je w jakiś sposób dodać do archiwum według daty?
terdon
W katalogu „Pobrane” jest wiele różnych plików i chcę uzyskać dostęp do ostatnio pobranego pliku (może go rozpakować, może gdzieś przenieść itp.).
Vi.

Odpowiedzi:

2

Nie sądzę, że bashjest w stanie to zrobić, więc możesz spróbować zsh. Nie jestem użytkownikiem Zsh, ale myślę, że ta konfiguracja powinna działać:

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

( reversetutaj, aby zobaczyć najnowsze pliki na końcu listy, ponieważ górna część może nie być widoczna na ekranie).

David Ongaro
źródło
0

Czasami muszę znaleźć ostatnio pobrany plik w katalogu Pobrane, ale mogę nie znać dokładnej nazwy pliku. Oto jak to robię.

ls -rt ~/Downloads

ls -twyświetla listę plików według czasu, a nie nazwy, przy czym najnowsze są wyświetlane jako pierwsze. Ponieważ mój katalog Pobrań zawiera tak wiele plików, nie chcę przewijać do góry listy, aby zobaczyć najnowsze. ls -rtodwraca kolejność listy, wyświetlając najnowszy plik na dole listy.

Stamtąd możesz łatwo robić to, czego potrzebujesz. Na przykład:

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

lub

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

Twoje pierwotne pytanie można wykonać w następujący sposób:

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

Zdaję sobie sprawę, że nie jest to zgodne z metodą wypełniania Tab, ale może być odpowiednie dla Twoich potrzeb.

Timothy Martin
źródło
Nie oszczędza pisania. Właściwie mam już skrypt rldo ls -lhtc "$@" | head -n $Nzrobienia tego.
Vi.
Pytanie brzmi: jak wstawić ten lub inny skrypt w <kbd> Tab </kbd>, aby myślenie było płynne.
Vi.
Twój fragment kodu ma również tendencję do łamania niektórych trudnych nazw plików, typowych dla pobranych plików.
Vi.
0

Zrobię dla tego następujące kroki

  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

A skrypt wygląda tak (może być złożony)

find ~/Downloads/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -N | cut -d' ' -f3 | xargs 7z l
Pappu
źródło
Mam już podobny skrypt o nazwie rl(ostatnia lista). Ale muszę to wyraźnie nazwać, a następnie skopiować i wkleić. Chcę, aby była bardziej zintegrowana z uzupełnianiem tabulatorów.
Vi.
-1

W bash możesz uzyskać coś blisko, na przykład

7z l ~/Downloads/Alt+n

Gdzie bindzostał zamapowany Alt+nna funkcję, która przepisuje READLINE_LINEzmienną.

Aby przybliżyć przybliżenie tabulacji, robię to z argumentem-parsing-perl-kludge i fzfdo prezentacji menu.

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

Będzie
źródło