Cách đặt hàng tệp theo ngày trong danh sách hoàn thành tab


9
$ 7z l ~ / Tải xuống /Tab

Làm thế nào để làm cho danh sách kết quả được sắp xếp theo ngày, không phải theo tên?

Tôi hiện đang sử dụng tập lệnh đặc biệt để liệt kê N tệp gần đây nhất trong một thư mục nhất định (và sao chép tên tệp theo cách thủ công vào dòng lệnh), nhưng muốn làm cho nó liền mạch và thuận tiện hơn.


4
Dễ dàng trong zsh . Tôi không biết nếu nó có thể trong bash.
Gilles 'SO- ngừng trở nên xấu xa'

Bạn có muốn chỉ xem các tệp được liệt kê theo ngày hoặc bạn sẽ muốn bằng cách nào đó thêm chúng vào kho lưu trữ theo thứ tự ngày?
terdon

Có nhiều tệp khác nhau trong thư mục "Tải xuống" và tôi muốn truy cập vào tệp đã tải xuống gần đây (có thể giải nén nó, có thể di chuyển đi đâu đó, v.v.).
Vi.

Câu trả lời:


2

Tôi không nghĩ bashlà có thể làm điều đó, vì vậy bạn có thể thử zsh. Tôi không phải là người dùng zsh nhưng tôi nghĩ cấu hình này sẽ hoạt động:

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

( reverseở đây để xem các tệp mới nhất ở cuối danh sách, vì phần trên có thể không hiển thị trên màn hình.)


0

Thỉnh thoảng tôi cần tìm tệp được tải xuống gần đây nhất trong thư mục Tải xuống của mình nhưng có thể không biết tên tệp chính xác. Đây là cách tôi làm điều đó.

ls -rt ~/Downloads

ls -tliệt kê các tệp theo thời gian không tên, với lần gần đây nhất được hiển thị đầu tiên. Vì thư mục Tải xuống của tôi chứa rất nhiều tệp nên tôi không muốn cuộn lên đầu danh sách để xem gần đây nhất. ls -rtđảo ngược thứ tự của danh sách, hiển thị tệp gần đây nhất ở cuối danh sách.

Từ đó bạn có thể làm những gì bạn cần khá dễ dàng. Ví dụ:

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

hoặc là

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

Câu hỏi ban đầu của bạn có thể được thực hiện như thế này:

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

Tôi nhận ra điều này không tuân thủ phương pháp hoàn thành Tab nhưng nó có thể phù hợp với nhu cầu của bạn.


Không lưu gõ. Thật sự tôi alredy có một kịch bản rlvới ls -lhtc "$@" | head -n $Nthực hiện việc này.
Vi.

Câu hỏi là làm thế nào để kết nối tập lệnh này hoặc tập lệnh khác vào Tab <kbd> </ kbd> làm cho suy nghĩ liền mạch.
Vi.

Đoạn mã của bạn cũng có xu hướng phá vỡ một số tên tệp khó, như điển hình cho các tệp đã tải xuống.
Vi.

0

Tôi sẽ làm các bước sau cho nó

  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

Và kịch bản trông như thế này (Có thể phức tạp)

find ~/Downloads/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -N | cut -d' ' -f3 | xargs 7z l

Tôi đã có kịch bản tương tự, được đặt tên rl(danh sách gần đây). Nhưng tôi cần phải gọi nó một cách rõ ràng, sau đó sao chép và dán. Tôi muốn nó được tích hợp nhiều hơn với hoàn thành tab.
Vi.

-1

Trong bash, bạn có thể lấy một cái gì đó gần bằng cách sử dụng, ví dụ,

7z l ~/Downloads/Alt+n

Trường hợp bindđã ánh xạ Alt+ntới một hàm viết lại READLINE_LINEbiến.

Để gần đúng hoàn thành tab, tôi làm điều này với một đối số phân tích cú pháp-perl-kydge và fzfđể trình bày một menu.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.