![가장 최근에 업데이트된 파일 10개를 인쇄하여 검색 결과를 정렬하려면 어떻게 해야 합니까?](https://linux55.com/image/135951/%EA%B0%80%EC%9E%A5%20%EC%B5%9C%EA%B7%BC%EC%97%90%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%EB%90%9C%20%ED%8C%8C%EC%9D%BC%2010%EA%B0%9C%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%98%EC%97%AC%20%EA%B2%80%EC%83%89%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%A0%95%EB%A0%AC%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 Linux 컴퓨터에서 사용자가 최근에 편집한 파일을 알고 싶습니다.
/home
최근에 편집된 최대 10개의 파일을 반복적으로 검색 하고 싶다고 가정해 보겠습니다.
find 명령이나 다른 솔루션을 사용하여 이 작업을 어떻게 수행할 수 있습니까?
예상 출력의 예:
27/6/2018 11:23 /home/my_data/file
27/6/2018 10:21 /home/top/oo/pp/file
27/6/2018 09:23 /home/my_data/GG/file
답변1
현재 디렉터리에서 최신 10개 파일을 찾습니다.
find -type f -printf "%TY-%Tm-%Td %TH:%TM:%TS\t%h/%f\n" | sort -r | head -n 10
선택적으로 | cut -f2
시간 정보를 제거하려면 추가하세요.
이 -printf
옵션을 사용하면 find
파일 이름 앞에 파일 수정 시간을 탭으로 구분하여 인쇄할 수 있습니다. 여기서 시간 형식은 간단히 sort
. sort -r
최신(즉, "가장 큰") 시간을 처음에 넣으려면 역순으로 정렬하세요.
개행 문자가 포함된 파일 이름의 경우 이는 약간 감소합니다. 이 문제는 printf 문자열을 종료하지 \n
않고 \0
null로 끝나는 파일 이름을 사용하여 해결할 수 있습니다 . 그런 다음 --zero-terminated
정렬 옵션을 추가하고 | tr '\0' '\n'
끝에 넣어 null 바이트를 다시 개행 문자로 변환합니다.
답변2
재귀적으로 나열
ls -lRrt
모든 파일을 찾아 날짜가 변경된 순서대로 나열하고 싶다면
ls -lrt `find . -type f`
이를 수행하는 방법은 아마도 10,000가지가 될 것입니다.