特定のディレクトリのファイルリストから最新のファイルを開く方法は?同じファイル名は最新の日付順にソートされます。
現在、次のコマンドを使用しています。
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*)"