[unix] 탭 완성 목록에서 날짜별로 파일을 주문하는 방법

$ 7z l ~ / 다운로드 /Tab

결과 목록을 이름이 아닌 날짜별로 정렬하는 방법은 무엇입니까?

나는 현재 특정 디렉토리에 N 개의 가장 최근 파일을 나열하고 파일 이름을 수동으로 명령 줄에 복사하기 위해 특수 스크립트를 사용하지만 매끄럽고 편리하게 만들고 싶습니다.



답변

나는 그렇게 bash할 수 없다고 생각 하므로 시도해보십시오 zsh. 나는 zsh 사용자는 아니지만이 구성이 작동해야한다고 생각합니다.

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

( reverse화면의 상단 부분이 보이지 않을 수 있으므로 목록 끝에 최신 파일이 표시됩니다.)


답변

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

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)

이것이 탭 완성 방법을 준수하지는 않지만 귀하의 요구에 적합 할 수 있음을 알고 있습니다.


답변

나는 그것을 위해 다음 단계를 수행 할 것입니다

  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


답변

bash에서는 예를 들어 다음을 사용하여 가까운 것을 얻을 수 있습니다.

7z l ~/Downloads/Alt+n

어디 bind매핑 한 Alt+n다시 쓰는 기능에 READLINE_LINE변수를.

탭 완성을 대략하기 위해 인수 구문 분석-kludge와 fzf함께 메뉴를 제시합니다.

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


답변