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*)"

おすすめ記事