Como faço para abrir o arquivo mais recente da lista de arquivos em um diretório específico no aix

1

Como faço para abrir o arquivo mais recente da lista de arquivos em um diretório específico? O mesmo nome de arquivo é organizado em data, com o último no último.

Atualmente estou usando os seguintes comandos:

ls -lrt filename*
tail -f filename
    
por Ajay mishra 26.06.2018 / 08:33

3 respostas

2

Se o seu shell é um shell parecido com o Bourne e seu [ incorporado implementa o teste -nt para testar se um arquivo é mais novo que outro, você pode usar

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

Isso iteraria todos os arquivos regulares (e links simbólicos para regular) (incluindo os ocultos) no diretório atual e, em seguida, informaria qual deles foi considerado o arquivo mais novo. Você substituiria a instrução printf pelo comando real que você deseja executar em "$newest" .

Como uma função shell, que adicionalmente recebe uma lista de arquivos como argumento:

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
)

Então

tail -f "$(newest ./filename*)"
    
por 26.06.2018 / 08:44
0

Você pode usar o GNU find , para imprimir todos os arquivos com a hora da última modificação, sort na ordem inversa, obter o arquivo modificado mais recente ( head -n 1 - top entry) e depois fazer um tail do último arquivo modificado

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

Se zsh estiver instalado, você pode fazer isso:

tail -f filenameCtrl+xm

Ctrl + x m é um complemento que se expande para o arquivo mais recente (de acordo com a última modificação ).

Em um script:

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

Onde om classifica por tempo de modificação (mais recente primeiro) e [1] seleciona o primeiro.

    
por 26.06.2018 / 12:16