타임스탬프를 기준으로 grep 명령에 표시된 파일 이름을 정렬하는 방법은 무엇입니까?

타임스탬프를 기준으로 grep 명령에 표시된 파일 이름을 정렬하는 방법은 무엇입니까?

다음 명령에서 타임스탬프를 기반으로 파일 이름을 어떻게 얻을 수 있습니까?

$ grep "exit 0" a*
a1.txt:+ exit 0
a2.txt:+ exit 0
a3.txt:+ exit 0
a4.txt:+ exit 0
a5.txt:+ exit 0

$ ls -latr 
-rw-r--r-- 1 user grp  83046 Oct 27 06:46 a5.txt
-rw-r--r-- 1 user grp  68108 Oct 27 07:59 a1.txt
-rw-r--r-- 1 user grp 159792 Oct 27 12:35 a2.txt
-rw-r--r-- 1 user grp 225703 Oct 27 16:41 a3.txt
-rw-r--r-- 1 user grp 246782 Oct 27 20:17 a4.txt

위 출력을 볼 수 있듯이 파일이 생성되었을 때의 타임스탬프를 기준으로 출력을 얻지 못하고 있습니다. 이것을 달성할 수 있는 방법이 있나요?

답변1

파일 이름에 공백, 탭, 개행( $IFS수정되지 않음), ?, *, [문자 또는 호출이 포함되어 있지 않으면 -다음을 수행해야 합니다.

grep -- "exit 0" $(ls -tr a*)

$()이를 명령 대체라고 합니다. 쉘이 먼저 실행된 ls -tr다음 출력을 분할+글로브하여 명령에 전달된 파일 목록을 형성합니다 grep.

답변2

쉘을 사용하면 zsh다음을 사용하여 glob의 순서에 영향을 줄 수 있습니다.글로벌 예선.

grep 'exit 0' a*(.Om)

Om시간을 수정하여 순서를 반대로 바꾸는 것입니다. .⃞만 선택하려면 .⃞도 추가했습니다.정기적인파일(아님목차또는관로또는장비또는심볼릭 링크...).

답변3

고마워요 오니. 다음 방법으로도 이것을 달성할 수 있었습니다. 물론 urs가 가장 간단합니다. 감사합니다

       grep -H "exit 0" /opt/ctmagent/ctm/sysout_archives/141027/d_dms_btch_alrt_ifm_scp_ksh* | awk -F":" '{system("ls -latr "$1"")}'

관련 정보