git에 추가된 파일을 기준으로 폴더의 파일을 정렬하고 싶습니다.
내가 찾고 있어요git ls-files 수정 시간별로 정렬, 그러나 이것은 시간별로 정렬된 git의 모든 파일을 제공합니다. 해당 하위 디렉터리의 파일/폴더만 원합니다.
예를 들어:
some-super-ls /my/git/repo/some/sub/directory
ls
이렇게 하면 이와 유사하지만 날짜/시간별로 정렬된 출력이 제공됩니다 . 가능합니까?
답변1
의 변종이 연결된 질문에 대한 답변마지막으로 커밋된 변경 사항을 기준으로 현재 디렉터리에서 추적된 모든 파일을 시간 역순으로 나열합니다.
git log --pretty='' --name-only | awk '/^[^/]*$/ { if (!seen[$0]++) print }'
답변2
이것이 옵션 인 경우 가장 최근 커밋의 에포크 시간( )을 반환하는 와 함께 zsh
사용할 수 있습니다 oe
(또는 Oe
최신에서 가장 오래된 것 또는 가장 오래된 것에서 최신순 정렬을 원하는지 여부에 따라) .git log
%ct
전임자.
print -rl *(Noe:'REPLY=$(git log -1 --format=%ct $REPLY)':)
명령을 기억하고 입력할 필요가 없도록 다음과 같은 편의 기능을 정의할 수 있습니다.
ct() { REPLY=$(git log -1 --format=%ct $REPLY); }
그런 다음 사용
print -rl *(Noe:ct:)
이는 다음을 사용하여 수행됩니다.zsh
글로벌 예선형태 oC
:
℃
파일 이름이 정렬되는 방식을 지정합니다.
특히
oe 및 o+는 특별한 경우입니다. 각각 뒤에는 e glob 한정자와 + glob 한정자로 구분된 쉘 코드가 옵니다. 항목의 파일 이름으로 설정된 REPLY 매개변수와 zsh_eval_context에 추가된 globsort를 사용하여 일치하는 각 파일에 대해 코드가 실행됩니다. 코드는 어떤 방식으로든 REPLY 매개변수를 수정해야 합니다. 반환 시 파일 이름 대신 인수 값을 정렬할 문자열로 사용합니다.
인용하다: