찾기 출력에서 ​​날짜 형식과 위치를 변경하는 방법

찾기 출력에서 ​​날짜 형식과 위치를 변경하는 방법

다음 명령이 있다고 가정해 보겠습니다. 내 드라이브에서 가장 최근에 수정된 20개의 파일 목록을 경로와 함께 표시하도록 설정되어 있습니다.

find -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -20

명령은 잘 작동하지만 날짜 및 시간 형식에는 밀리초도 표시하므로 정보가 너무 많습니다. 내 질문은 그것을 제거하는 방법입니다. 또한 경로가 왼쪽에 나타나고 날짜가 오른쪽에 나타나도록 인쇄 위치를 어떻게 변경합니까?

답변1

다음을 수행할 수 있습니다.

find -type f -printf '%TY-%Tm-%Td %.8TT %p\n' | sort -r | sed -r 's/(^[^ ]+ [^ ]+) (.+)/\2 \1/' | head -20

및 사이에 배치하면 .8필드가 8자( )로 제한되도록 수정됩니다. 정규식은 줄의 첫 번째 부분(사이에 공백이 있는 비공백 문자 집합)을 줄의 끝으로 이동합니다. 시간은 명령줄 시작 부분에 있어야 합니다.%TThh:mm:sssedsort

경고하다:표시된 파일 이름에 공백과 숫자가 포함된 경우 파일 이름 뒤에 날짜를 배치하면 혼동을 일으킬 수 있습니다. 그러나 다른 스크립트나 프로그램에 입력하는 것보다 사람의 관점에서 보면 이 출력이 괜찮을 것입니다.

그렇지 않으면 파일 이름 앞에 시간을 유지하십시오.

find -type f -printf '%TY-%Tm-%Td %.8TT %p\n' | sort -r | head -20

편집하다: sed@steeldriver의 의견에 따라 소수 초를 자르는 것은 불필요합니다. 이것은 GNU 확장일 수도 있지만 -printf어쨌든 POSIX는 아닌 것 같습니다. 또한 정렬 오류가 수정되었습니다.

관련 정보