如何在BASH中获取最新的带时间戳的文件

时间:2012-06-30 22:34:49

标签: bash

我正在编写一个部署脚本,将带时间戳的备份文件保存到备份目录中。我想做一个回滚到最新文件的回滚实现。

我的备份目录:

$:ls

.              1341094065_public_html_bu  1341094788_public_html_bu
..             1341094390_public_html_bu
1341093920_public_html_bu  1341094555_public_html_bu

我想在备份目录中识别最新文件(通过文件名中的时间戳),并将其名称保存到变量,然后将其保存到../public_html,依此类推......

4 个答案:

答案 0 :(得分:2)

ls -t将按照mtime对文件进行排序。 ls -t | head -n1将选择最新的文件。这与您拥有的任何命名方案无关,可能是也可能不是。

答案 1 :(得分:2)

...以及更“正确”的方式,当文件名包含换行符时不会中断,也不会在没有匹配文件时(未展开的glob结果)

for newestfile in ./* ; do : ; done
if test -e "$newestfile"; then do something with "$newestfile" ; fi

答案 2 :(得分:1)

最新加盖时间戳的文件名应按字母顺序排序。因此,您可以使用tail -n1来提取它。

答案 3 :(得分:0)

对于名称中没有换行符的文件:

shopt -s nullglob
printf '%s\n' "$buDir"/* | tail -n 1