이름에 특정 하위 문자열이 포함된 마지막으로 작성된 파일을 반환하시겠습니까?

이름에 특정 하위 문자열이 포함된 마지막으로 작성된 파일을 반환하시겠습니까?

로깅을 모니터링할 때, 작성된 날짜별로 정렬된 로그 파일을 봐야만 애플리케이션이 가장 최근에 실행한 로그 파일의 이름을 볼 수 있습니다.

디렉토리와 부분 문자열이 주어지면 해당 부분 문자열을 포함하는 파일(가장 최근에 작성된 파일)의 이름을 반환할 수 있는 방법이 있습니까?

그래서 내가 가지고 있다면

AFile1.log (last written 9am)
AFile2.log (last written 10am)

파일 이름 "AFile"이 포함된 최신 로그를 반환하고 싶습니다. AFile2.log가 반환됩니까?

답변1

로깅을 모니터링할 때, 작성된 날짜별로 정렬된 로그 파일을 봐야만 애플리케이션이 가장 최근에 실행한 로그 파일의 이름을 볼 수 있습니다.

이는 애플리케이션이 다음과 같이 로그 파일에 기록한다는 의미라고 생각합니다.

  • 파일 1.로그
  • 파일 2.로그
  • 파일 3.로그
  • 하나의 문서엑스. 통나무

디렉토리와 부분 문자열이 주어지면 해당 부분 문자열을 포함하는 파일(가장 최근에 작성된 파일)의 이름을 반환할 수 있는 방법이 있습니까?

나는 이 하위 문자열이 파일 이름 AFile의 일부이고 로그 파일에서 찾을 문자열이 아니라고 가정합니다.

파일 이름 "AFile"이 포함된 최신 로그를 반환하고 싶습니다. AFile2.log가 반환됩니까?

매뉴얼에서 ls( man ls):

-t     sort by modification time, newest first
-l     use a long listing format

따라서 이 작업이 실제로 수행되는 모습을 먼저 보려면 ls -lt먼저 최신 수정 사항이 포함된 긴 디렉터리 목록을 얻을 수 있습니다.

$ ls -lt AFile*.log
-rw-r--r-- 1 root root 27254 May 23 09:00 AFile2.log
-rw-r--r-- 1 root root 29599 May 22 21:15 AFile1.log

좋아요 이것은 작동합니다. (우리는 긴 목록을 원하지 않는다는 것을 알고 있습니다. 단지 -l원하는 출력이 올바른지 확인하고 싶습니다.) 이제 첫 번째 행만 얻으려면 어떻게 해야 합니까? 어떻게 해야 할지 모른다면 apropos사용해 보는 것이 도움이 되는 경우가 많습니다. 그럼 한번 시도해 보겠습니다.

$ apropos "first"

여러 줄 출력에서 ​​다음을 볼 수 있습니다.

head (1)             - output the first part of files

head좋아요, ( man head또는 )에 대한 매뉴얼 페이지를 살펴보겠습니다 man 1 head.

-n, --lines=[-]K
print  the first K lines instead of the first 10; with the lead‐
ing '-', print all but the last K lines of each file

점들을 연결해서 활용해보세요관로, 최신 파일을 얻습니다.

$ ls -t AFile*.log | head -n 1
AFile2.log

|파이프는 출력을 전달하는 문자를 사용하는 구성입니다 .ls -t AFile*.loghead -n 1

관련 정보