logo
Published on

Bashのfindコマンドで更新日時の一番新しいファイルを出力

Authors

LinuxのBashコマンドラインのfindコマンドで更新日時の一番新しいファイルをフィルタして出力する方法について紹介します。

lsでやろうとしたんだけど、

ls -Rtald "/mnt/c/Users/user/OneDrive/ドキュメント/ShareX/Screenshots/" | head -n 11

なんか複雑になったし、ていうかできなかった。

findならできる。

find "/path" -printf '%T+ %p\n' | sort -r | head -n 1
2018-09-02+04:24:51.0869511000 /mnt/c/Users/user/OneDrive/ドキュメント/ShareX/Screenshots/2018-09/ShareX_ScreenShot_b3e5c560-30ec-48b2-9d1f-b943a0d5e9bb.png

これだと日付が出力されてしまうので、

find "/path" -printf '%T+ %p\n' | sort -r | head -n 1 | sed -Ee "s/^.*(\/mnt.*\.(jpg|png))/\1/g")

こんな感じで、出力を変えてやります。