aix의 특정 디렉토리의 파일 목록에서 최신 파일을 여는 방법

aix의 특정 디렉토리의 파일 목록에서 최신 파일을 여는 방법

특정 디렉터리의 파일 목록에서 최신 파일을 여는 방법은 무엇입니까? 동일한 파일 이름은 최신 날짜순으로 정렬됩니다.

현재 다음 명령을 사용하고 있습니다.

ls -lrt filename*
tail -f filename

답변1

쉘이 Bourne과 유사한 쉘이고 [내장 함수 가 -nt한 파일이 다른 파일보다 최신인지 테스트하는 테스트를 구현하는 경우 다음을 사용할 수 있습니다.

newest=
for file in ./* ./.*; do
    if [ -f "$file" ]; then
        if [ -z "$newest" ] || [ "$file" -nt "$newest" ]; then
            newest=$file
        fi
    fi
done

if [ -f "$newest" ]; then
    printf 'The latest file is "%s"\n' "$newest"
else
    echo 'Could not find files here' >&2
    exit 1
fi

이는 현재 디렉터리(숨겨진 파일 포함)에 있는 모든 일반 파일(및 일반 파일에 대한 심볼릭 링크)을 반복한 다음 어떤 파일이 최신인지 알려줍니다. printf이 명령문을 실행하려는 실제 명령으로 바꿀 수 있습니다 "$newest".

셸 함수로서 파일 목록도 인수로 받아들입니다.

newest () (
    newest=
    for file do
        if [ -f "$file" ]; then
            if [ -z "$newest" ] || [ "$file" -nt "$newest" ]; then
                newest=$file
            fi
        fi
    done

    if [ -f "$newest" ]; then
        printf '%s\n' "$newest"
    else
        echo 'No files found' >&2
        return 1
    fi
)

그 다음에

tail -f "$(newest ./filename*)"

답변2

설치된 경우 zsh그곳에서 다음을 수행할 수 있습니다.

꼬리 -f 파일 이름Ctrl+xm

Ctrl+xm(마지막 파일을 기준으로) 최신 파일로 확장하는 완성기입니다.개정하다시간).

스크립트에서:

#! /usr/bin/env zsh
tail -f filename*(om[1])

om수정 시간(가장 최근순)을 기준으로 정렬하고 첫 [1]번째 항목을 선택합니다.

답변3

GNU를 사용하여 find모든 파일의 마지막 수정 시간을 sort역순으로 인쇄하고 가장 최근에 수정된 파일( head -n 1--top 항목)을 가져온 다음 마지막으로 수정된 파일을 추적할 수 있습니다.

  find <Directory-name> -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -n 1 | awk  '{print $3}' | xargs tail -f

관련 정보