다음 명령이 있다고 가정해 보겠습니다. 내 드라이브에서 가장 최근에 수정된 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자( )로 제한되도록 수정됩니다. 정규식은 줄의 첫 번째 부분(사이에 공백이 있는 비공백 문자 집합)을 줄의 끝으로 이동합니다. 시간은 명령줄 시작 부분에 있어야 합니다.%
TT
hh:mm:ss
sed
sort
경고하다:표시된 파일 이름에 공백과 숫자가 포함된 경우 파일 이름 뒤에 날짜를 배치하면 혼동을 일으킬 수 있습니다. 그러나 다른 스크립트나 프로그램에 입력하는 것보다 사람의 관점에서 보면 이 출력이 괜찮을 것입니다.
그렇지 않으면 파일 이름 앞에 시간을 유지하십시오.
find -type f -printf '%TY-%Tm-%Td %.8TT %p\n' | sort -r | head -20
편집하다: sed
@steeldriver의 의견에 따라 소수 초를 자르는 것은 불필요합니다. 이것은 GNU 확장일 수도 있지만 -printf
어쨌든 POSIX는 아닌 것 같습니다. 또한 정렬 오류가 수정되었습니다.