ディレクトリとサブディレクトリでstatコマンドを実行し、最新のファイルのみを印刷するスクリプトを作成する方法

ディレクトリとサブディレクトリでstatコマンドを実行し、最新のファイルのみを印刷するスクリプトを作成する方法

ディレクトリ内の最新のファイルを見つけるには?私のスクリプトは、ディレクトリ内の最新のファイルに追加の出力を提供します。

#!/bin/bash
echo "Please type in the directory you want all the files to be listed"
read directory
for entry in "$directory"/*
do
 (stat -c %y  "$directory"/* | tail -n 1)
done
 for D in "$entry"
 do
 (ls -ltr "$D" | tail -n 1)
done

現在の出力:

2018-02-19 12:24:19.842748830 -0500
2018-02-19 12:24:19.842748830 -0500
2018-02-19 12:24:19.842748830 -0500
-rw-r--r-- 1 root root 0 Feb 19 12:19 test3.xml

私のディレクトリ構造は次のとおりです。

$ pwd
/nfs/test_library/myfolder/test

$ ls -ltr test
1.0  2.0  3.0

$ ls -ltr 1.0
test1.xml
$ ls -ltr 2.0
test2.xml
$ ls -ltr 3.0
test3.xml(which is the most recent file)

したがって、印刷用にのみスクリプトを作成する必要があります。test3.xml

ベストアンサー1

私はあなたが望むことを達成することができました。

牛に似た一種の栄養stat

read -rp "Please type in the directory you want all the files to be listed" directory
if [ -d "$directory" ]; then
    find "$directory" -type f -exec stat --printf='%Y\t%n\n' {} \; | sort -n -k1,1 | tail -1
else
    echo "Error, please only specify a directory"
fi

BSDstat

read -rp "Please type in the directory you want all the files to be listed" directory
if [ -d "$directory" ]; then
    find "$directory" -type f -exec stat -F -t '%s' {} \; | sort -n -k6,6 | tail -1
else
    echo "Error, please only specify a directory"
fi

指定されたディレクトリ内のすべてのファイルを再帰的に検索します。次に、UNIX EPOCHタイムスタンプ形式の修正タイムスタンプを使用してそれを計算します。次に、このタイムスタンプフィールドに基づいてソートします。最後に、最後の結果(最も最近更新されたファイル)のみが印刷されます。

おすすめ記事