git 시간을 기준으로 폴더 내용 정렬

git 시간을 기준으로 폴더 내용 정렬

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 매개변수를 수정해야 합니다. 반환 시 파일 이름 대신 인수 값을 정렬할 문자열로 사용합니다.


인용하다:

관련 정보