탭 완성 목록에서 날짜별로 파일을 정렬하는 방법

탭 완성 목록에서 날짜별로 파일을 정렬하는 방법
$ 7z l ~/다운로드/Tab

이름 대신 날짜별로 결과 목록을 정렬하려면 어떻게 해야 합니까?

저는 현재 특수 스크립트를 사용하여 특정 디렉터리에 있는 N개의 최신 파일을 나열하고 파일 이름을 명령줄에 수동으로 복사하지만 원활하고 더 편리하게 만들고 싶습니다.

답변1

할 수 없을 것 같으니 bash해보셔도 됩니다 zsh. 저는 zsh 사용자는 아니지만 다음 구성이 작동해야 한다고 생각합니다.

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

( reverse위 섹션이 화면에 표시되지 않을 수 있으므로 여기 목록 끝에 있는 최신 파일을 확인하세요.)

답변2

때로는 다운로드 디렉터리에서 최근 다운로드한 파일을 찾아야 하는데 정확한 파일 이름을 모를 수도 있습니다. 내가 한 일은 다음과 같습니다.

ls -rt ~/Downloads

ls -t이름이 아닌 시간별로 파일을 나열하여 가장 최근 파일을 먼저 표시합니다. 내 다운로드 디렉토리에는 너무 많은 파일이 포함되어 있으므로 최신 파일을 보기 위해 목록 맨 위로 스크롤하고 싶지 않습니다. ls -rt목록의 순서를 반대로 하여 목록 맨 아래에 최신 파일을 표시합니다.

거기에서 당신이 해야 할 일을 쉽게 할 수 있습니다. 예를 들어:

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

또는

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

원래 질문은 다음과 같이 수행할 수 있습니다.

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

이것이 탭 완성 접근 방식에 맞지 않는다는 것을 알고 있지만 귀하의 요구 사항에는 적합할 수 있습니다.

답변3

이에 대해 다음 단계를 수행하겠습니다.

  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

스크립트는 다음과 같습니다(복잡할 수 있음).

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

답변4

Bash에서는 다음을 사용하여 가까운 것을 얻을 수 있습니다.

7z l ~/Downloads/Alt+n

이는 재정의된 변수의 함수에 bind매핑되었습니다 .Alt+nREADLINE_LINE

대략적인 탭 완성을 위해 인수 구문 분석-perl-kludge를 사용하여 fzf메뉴를 표시합니다.

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

관련 정보