마지막으로 생성/수정된 파일의 마지막 5줄을 보는 방법은 무엇입니까?

마지막으로 생성/수정된 파일의 마지막 5줄을 보는 방법은 무엇입니까?

팀을 지원하기 위해 매일 특정 시간에 백업과 상태 업데이트를 해야 하는데, 이를 위해 *.aff디렉터리에서 마지막으로 생성/수정된 파일의 마지막 5줄을 확인하고 업데이트해야 합니다.

Linux의 *.aff파일과 같이 마지막으로 수정된 파일(특정 확장자를 사용)의 마지막 5줄을 보는 방법을 알려주실 수 있는 분 계십니까? *.log등 의 다른 파일도 생성합니다 .

답변1

쉘 포함 zsh:

tail -n 5 ./*.aff(D.om[1])

다른 쉘에서는 파일 이름에 포함될 수 있는 내용에 대해 가정하고 싶지 않으면 신뢰할 수 있는 것을 찾기가 어렵습니다.

예를 들어 bash최신 GNU 시스템을 사용하는 경우 해당 시스템은 다음과 같습니다.

find . -maxdepth 1 -name '*.aff' -type f -printf '%T@:%p\0' |
  sort -rzn |
  sed -zn 's/[^:]*://p;q' |
  xargs -r0 tail -n 5

또는:

find . -maxdepth 1 -name '*.aff' -type f -printf '%T@/%p\0' |
  sort -rzn | (IFS=/ read -rd '' mtime file && tail -n 5 "$file")

답변2

파일 이름에 개행 문자가 포함되어 있지 않고 모든 *.aff파일이 일반 파일이라고 가정합니다.

ls -t1d -- *.aff | head -n 1

가장 최근에 수정된 파일의 이름을 제공합니다 .aff. 마지막 5개 행을 원하면 다음을 수행하십시오.

tail -n 5 -- "$(ls -t1d -- *.aff | head -n 1)"

답변3

모든 GNU 시스템 및 Busybox에서 작동하는 또 다른 안전한 방법은 다음과 같습니다.

tail -n5 "$(stat -c "%Y %n" ./* | 
    sort -nk1,1 | cut -d ' ' -f 2- | tail -n1)"

이는 대부분의 경우에 작동하지만 파일 이름에 개행 문자가 포함될 수 있는 경우 다음을 사용하십시오(GNU에만 해당, 파일이 개행 문자로 끝나면 여전히 중단됩니다).

tail -n5 "$(stat --printf "%Y %n\0" ./* | 
    sort -rznk1,1 | sed -zn 's/[0-9]\+ //p;q')"

관련 정보