Shell - 주어진 패턴과 일치하는 최신 파일 찾기

Shell - 주어진 패턴과 일치하는 최신 파일 찾기

다음 파일이 있습니다.

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*  
-rw-r--r-- 1 root root 0 Jul  5 18:54 /client/folder299/version_1
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder299/ifolder/version_a
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder300/ifolder1/version_b
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder301/ifolder2/version_c
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder302/ifolder3/version_d
-rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder300/version_2
-rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder301/version_3
-rw-r--r-- 1 root root 0 Jul 19 13:36 /client/folder302/version_4

ID와 패턴이 일치하는 최신 버전의 파일을 가져오려고 합니다. 아래에 예가 나와 있습니다.

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*   | grep 299
-rw-r--r-- 1 root root 0 Jul  5 18:54 /client/folder299/version_1
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder299/ifolder/version_a

위 예에서 최신 버전은 version_a입니다.

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*   | grep 299 | tail -1
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder299/ifolder/version_a

이 방법은 파일을 찾는데 좋지 않다고 들었습니다(왜 `ls`를 구문 분석하지 *않나요*?) 대안을 찾고 있습니다.https://stackoverflow.com/a/26766782/9316558. 불분명한 점이 있으면 알려주시기 바랍니다.

고쳐 쓰다:

아래 Jasen의 답변에서 경로/클라이언트에서 최신 파일을 얻을 수 있습니다.

find /client -path "*299*" -printf "%T@ %P\n" | sort -n | tail -1

그러나 위 명령은 최신 파일을 제공합니다. 최신 버전의 파일을 찾고 있습니다.

답변1

검색과 정렬을 결합할 수 있습니다.

find -path "some pattern" -printf "%T@ %P\n" | sort -n | tail -1

관련 정보