Linux에서 최근에 액세스한 파일을 찾는 쉘 스크립트

Linux에서 최근에 액세스한 파일을 찾는 쉘 스크립트

디렉토리에서 가장 최근에 액세스한 파일의 이름을 인쇄합니다. /var/run/log/그 이름의 형식은 다음과 같습니다 (여기서는 정확히 3자리이므로 파일 이름은 access-<DDD>.log3자리 숫자와 그 다음에 오는 숫자로 <DDD>구성됩니다 ).access-.log

답변1

zsh쉘 사용 :

setopt EXTENDED_GLOB
print /var/run/log/access-[[:digit:]](#c3).log(.oa[1])

여기서는 [[:digit:]](#c3)세 자리 문자가 정확히 일치합니다. 이후에는 문자열이 .log이름에 나타나야 합니다. 의 점은 (.oa[1])일반 파일만 일치하고 oa내림차순으로 정렬 되도록 와일드카드 패턴을 한정합니다 atime. [1]처음으로 일치하는 이름(가장 최근에 방문한 이름) 만 반환됩니다. 유틸리티 print는 생성된 경로 이름을 인쇄합니다.

경로는 출력하지 않고 파일명만 출력 print하도록 변경되었습니다 .basename


이것이 숙제이고 bash스크립트를 작성해야 하는 경우:

#!/bin/bash

zsh -o extended_glob -c 'print /var/run/log/access-[[:digit:]](#c3).log(.oa[1])'

답변2

이 시도:

ls -tu | grep -e '^access-[0-9]\{3\}\.log$' | awk '{print $NF}'

관련 정보