Shell - 与えられたパターンに一致する最新のファイルを探す

Shell - 与えられたパターンに一致する最新のファイルを探す

次のファイルがあります。

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*  
-rw-r--r-- 1 root root 0 Jul  5 18:54 /client/folder299/version_1
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder299/ifolder/version_a
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder300/ifolder1/version_b
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder301/ifolder2/version_c
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder302/ifolder3/version_d
-rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder300/version_2
-rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder301/version_3
-rw-r--r-- 1 root root 0 Jul 19 13:36 /client/folder302/version_4

IDとパターンが一致する最新バージョンのファイルをインポートしようとしています。以下に例を示します。

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*   | grep 299
-rw-r--r-- 1 root root 0 Jul  5 18:54 /client/folder299/version_1
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder299/ifolder/version_a

上記の例では、最新バージョンはversion_aです。

root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*   | grep 299 | tail -1
-rw-r--r-- 1 root root 0 Jul  5 18:58 /client/ifolder299/ifolder/version_a

この方法はファイルを見つけるのに悪いと聞きました(なぜ`ls`を解析しないのですか?)代替を探しています。https://stackoverflow.com/a/26766782/9316558。不明な点があれば教えてください。

修正する:

以下のJasenの回答から、パス/クライアントから最新のファイルを入手できます。

find /client -path "*299*" -printf "%T@ %P\n" | sort -n | tail -1

ただし、上記のコマンドは最新のファイルを提供します。最新バージョンのファイルを探しています。

ベストアンサー1

検索と並べ替えを組み合わせることができます。

find -path "some pattern" -printf "%T@ %P\n" | sort -n | tail -1

おすすめ記事