在 Bash 中,我想创建一个函数,该函数返回与特定模式匹配的最新文件的文件名。例如,我有一个文件目录,例如:
Directory/ a1.1_5_1 a1.2_1_4 b2.1_0 b2.2_3_4 b2.3_2_0
我想要以“b2”开头的最新文件。我如何在 bash 中做到这一点?我需要在我的~/.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