다음을 사용하여 "일반 순서"로 날짜별로 정렬된 출력을 생성할 수 있습니다.
ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done
결과:
2011년 1월 23일 10:42 무슨일이 있었나 2007.12.20.avi 2009년 6월 26일 뭔가2009.06.25.avi 2010년 2월 12일 뭔가2010.02.11.avi 2011년 1월 29일 09:17 무슨일이 있었나 2011.01.27.avi 2011년 2월 11일 20:06 무슨일이 있었나 2011.02.10.avi 2011년 2월 27일 23:05 무슨일이 있었나 2011.02.24.avi
다음과 같이 최신 파일이 맨 위에 있는 출력을 어떻게 얻을 수 있습니까?
2011년 2월 27일 23:05 무슨일이 있었나 2011.02.24.avi 2011년 2월 11일 20:06 무슨일이 있었나 2011.02.10.avi 2011년 1월 29일 09:17 무슨일이 있었나 2011.01.27.avi 2011년 1월 23일 10:42 무슨일이 있었나 2007.12.20.avi 2010년 2월 12일 뭔가2010.02.11.avi 2009년 6월 26일 뭔가2009.06.25.avi
답변1
대부분의 단일 머신에는 옵션이 ls
있습니다 -t
. man
내 데비안 상자 페이지 에서 :
-t 수정 시간을 기준으로 정렬
다음 명령을 시도해 보십시오:
$ ls -lt
답변2
정렬하려는 텍스트 파일입니까, 아니면 날짜별로 나열된 디렉토리를 보겠습니까? 후자의 경우,이 -t
플래그를 사용하세요ls
. 전자의 경우 특히 -M
세 글자의 월 이름 약어를 기준으로 정렬하는 GNU 정렬 플래그를 참조하세요. 다음 명령은 세 번째, 첫 번째, 두 번째 및 네 번째 열을 기준으로 정렬하고 두 번째 정렬 키를 월 이름으로 처리합니다.
sort -k 3 -k 1M -k2 -k4 in.txt
항상 YYYY-MM-DD-HH-MM-SS 순서로(즉, 최상위 우선, 일정한 열 너비) 일본/ISO 스타일 날짜를 사용하는 것이 좋습니다. 날짜순 정렬은 사전 정렬과 동일합니다.
답변3
ls
원래 질문을 받았을 때 해당 기능이 명령에 포함되었는지 확실하지 않지만 이제 옵션이 있습니다 --full-time
.
예를 들어,
ls -t --full-time
아래에서 가장 오래된 시간순으로 정렬됩니다. 또는 다음을 사용하는 경우:
ls -tr --full-time
그러면 순서가 반대로 됩니다.
답변4
그러면 모든 파일이 나열됩니다.재귀적으로출력 ls
과역 정렬통과시간 변경(시간):
find -print0 -type f directory_path | xargs -0 ls -ltr
더 빠르게 검색하려면 다음 명령을 사용하세요.fd
fd -0 -t f directory_path | xargs -0 ls -ltr