我有以下文件。
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 的回答中,我可以获取路径 /client 中的最新文件
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