0

使用 bash,我有 /home/user/logs/ 的目录

8 月 2 日 15:34 backup.20120802.tar.gz

8 月 3 日 00:26 backup.20120803.tar.gz

8 月 4 日 00:25 backup.20120804.tar.gz

8 月 15 日 06:39 backup.20120816.tar.gz

这每隔几天就会更新一次,但是如果出现问题,我希望它自动恢复最近的备份,我怎样才能使用 bash 只提取最近的备份?

4

2 回答 2

1
ls -t1 /home/user/logs/ | head -1

在 /home/user/logs/ 中为您提供最新修改的文​​件。所以你可以这样做:

cd /dir/to/extract
tar -xzf "$(ls -t1 /home/user/logs/ | head -1)"

注意:
这假设 /home/user/logs/ 是平面的并且只包含“*.tar.gz”文件

于 2012-08-17T08:28:55.470 回答
0

如果时间戳可能并不总是可靠的,请尝试按日期排序。

ls -1 /home/user/logs/backup.*.tar.gz | sort -t . -k2rn | head -1

理想情况下,您不应该解析来自 的输出ls,但如果只有与通配符匹配的常规命名文件,这可能是最简单的解决方案;sort无论如何,都需要面向行的输入,因此该任务更多地涉及完全任意文件名的一般情况。(这对您来说可能没有意义,但就 Unix 而言,拥有一个名为 的文件是完全可以的backup.20120816.tar.gz(newline)backup.20380401.tar.gz。)

于 2012-08-17T08:46:40.860 回答