在Bash中,我想创建一个函数,该函数返回与特定模式匹配的最新文件的文件名。例如,我有一个文件目录,例如:
Directory/ a1.1_5_1 a1.2_1_4 b2.1_0 b2.2_3_4 b2.3_2_0
我想要以“ b2”开头的最新文件。我该怎么做呢?我需要在~/.bash_profile脚本中包含它。
~/.bash_profile
该ls命令具有-t按时间排序的参数。然后,您可以使用抓取第一个(最新的)head -1。
ls
-t
head -1
ls -t b2* | head -1
但请注意:为什么不应该解析ls的输出
我个人的看法:ls仅当文件名包含空格或换行符之类的有趣字符时,解析才是危险的。如果可以保证文件名不会包含有趣的字符,则解析ls是非常安全的。
如果您正在开发一个脚本,该脚本打算在许多不同情况下在许多系统上由许多人运行,那么我非常建议您不要解析ls。
这是“正确”的操作方法:如何在目录中找到最新(最新,最早,最旧)文件?
unset -v latest for file in "$dir"/*; do [[ $file -nt $latest ]] && latest=$file done