날짜순 정렬


17

기발한:

2011 년 1 월 23 일 10:42 뭔가 2007.12.20.avi
2009 년 6 월 26 일 SOMETHING 2009.06.25.avi
2010 년 2 월 12 일 SOMETHING 2010.02.11.avi
1 월 29 2011 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
1 월 29 2011 09:17 뭔가 2011.01.27.avi
2011 년 1 월 23 일 10:42 SOMETHING 2007.12.20.avi
2010 년 2 월 12 일 SOMETHING 2010.02.11.avi
2009 년 6 월 26 일 SOMETHING 2009.06.25.avi

위의 목록 (원본)을 다음과 같이 생성했습니다.

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

최신 파일이 맨 위에있는 출력을 어떻게 얻을 수 있습니까?


2
@ user4724 : yuo는 어떻게 목록을 생성 했습니까?

@ user4724 : 그건 당신이 저를 위해 outpout의 동일한 유형을 생성하지 않습니다 - 질과 같은 상관없이이 대답

답변:


21

대부분의 유니 세 ls에는 -t옵션이 있습니다. man내 데비안 상자 의 페이지에서 :

-t 수정 시간을 기준으로 정렬

다음 명령을 시도하십시오 :

$ ls -lt


재귀 적으로 필요합니다, 죄송합니다
LanceBaynes

+ ls -lt는 하나의 파일이 변경되면 전체 디렉토리를 나열합니다.
LanceBaynes

14

정렬하려는 텍스트 파일입니까, 아니면 날짜별로 디렉토리 목록을 보려고합니까? 후자의 경우 플래그를로 사용하십시오-tls . 전자의 경우 특히 -MGNU 문자에 대한 플래그를 참조하십시오.이 플래그는 3 글자 달의 약어로 정렬됩니다. 다음 명령은 두 번째 정렬 키를 월 이름으로 취급하여 3 번째, 1 번째, 2 번째 및 4 번째 열을 기준으로 정렬합니다.

sort -k 3 -k 1M -k2 -k4 in.txt

항상 YYYY-MM-DD-HH-MM-SS 순서로 항상 일본어 / ISO 스타일 날짜를 사용하십시오 (즉, 가장 중요한 첫 번째, 일정한 열 너비). 날짜별로 정렬하는이 방법은 사전 식 정렬과 동일합니다.


해당 날짜 형식 제안에서 선행 0을 잊지 마십시오. 이것은 문자열을 직접 포맷 할 때마다 사용하는 형식입니다.
stolenmoment

@stolenmoment 공백을 신경 쓰지 않으면 0 대신 공백을 사용할 수 있습니다. 중요한 점은 상수 열입니다. 2018  5 26작동 단지뿐만 아니라 2018 05 26, 무엇을 잘 작동하지 않는 것은 (한 당신은 머지 연속 공간 ... 마크 업을 통과하지 않는 한) 2018 5 26.
Gilles 'SO- 악마 그만해'

예, 파일 이름에서 공백을 반사적으로 피하십시오. 왜 그런지 추측 할 수 있습니다.
stolenmoment 11

3

ls원래 질문을 할 때 기능이 명령 에 있는지 확실하지 않지만 이제 옵션을 사용할 수 있습니다 --full-time.

예를 들어

ls -t --full-time 

맨 아래에서 가장 오래된 시간으로 정렬합니다. 또는 다음을 사용하는 경우 :

ls -tr --full-time

그러면 순서가 반대로됩니다.


문제는 수정 날짜 / 시간별로 파일을 정렬하는 방법에 관한 것입니다. -t옵션은 완전히 그 질문에 대한 답; --full-time실제로 관련이 없습니다.
G-Man, 'Reinstate

유일한 -t 옵션은 6 개월 이내에 수정 된 파일의 연도를 제공하지 않으며 --full-time은 정확히 그에 해당합니다. 시간 스타일을 사용하여 원하는 날짜 형식을 지정할 수도 있습니다. 예 LS -ltr --time 스타일 + % Y- % M- % D \ % H % M : %의 S
Bevan에 토마스

당신의 요점이 무엇인지 잘 모르겠습니다.  ls -t파일의 모드 및 소유자, 호스트 이름 및 운영 체제 버전 또는 중국 차 가격을 제공하지 않습니다.  ls -t수정 날짜도 전혀 표시하지 않습니다. 그러나 문제는 파일 정보를 표시하는 것이 아니라 수정 날짜별로 파일을 정렬하는 것입니다. 귀하는 질문에 대한 답변에 기여하지 않습니다. 알기 쉬운 보충 정보를 추가하고 있습니다. 평판 점수 가 50 개인 경우 해당 정보를 주석 으로 게시 할 수 있습니다 .
G-Man, 'Reinstate

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.