我正在编写一个部署脚本,将带时间戳的备份文件保存到备份目录中。我想做一个回滚到最新文件的回滚实现。
我的备份目录:
$:ls
. 1341094065_public_html_bu 1341094788_public_html_bu
.. 1341094390_public_html_bu
1341093920_public_html_bu 1341094555_public_html_bu
我想在备份目录中识别最新文件(通过文件名中的时间戳),并将其名称保存到变量,然后将其保存到../public_html,依此类推......
答案 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