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

関連情報