获取最新的SQL转储文件

时间:2019-05-16 13:47:30

标签: bash

我将以下日期和时间另存为文件名:

/app/sql/20190101_2000.sql
        /20190115_1423.sql
        /20190222_1255.sql
        / etc...

现在,我想创建一个脚本来根据文件名获取最新文件。我无法获得最后的编辑或创建日期,因为有时会导入大量文件,并从其导入而不是创建中获取日期时间。

如您所见YYYYMMDD_hhmm.sql

我到目前为止所获得的(抱歉,我不是bash专家)

newestfile="000000000000"

for file in *.sql ; do
    filedate="${file%.sql}" # remove the '.sql'
    filedate="${filedate//_}" # remove the underscore, so I can compare

    if [[ "$filedate" -gt "$newestfile" ]] ; then
        newestfile="$filedate"
    fi
done

echo "highest file found: $newestfile"

问题是,我不能走得更远。我现在想将该“最新”文件导入mysql,但是我无法将下划线恢复到原来的位置。如果我不首先删除下划线,则无法与-gt进行比较。

我的代码看起来像这样:

mysql -uuser -p1234 my_database < $newestfile

导入sql dump。

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

那呢:

ls -R *.sql | sort | tail -1

ls -R在子目录中执行ls
sort进行排序。
tail -1采用最后一个。对结果进行排序后,将显示日期最高的那个。

答案 1 :(得分:0)

您可以对文件进行排序并获取第一个文件

newestfile=$(ls /app/sql/$.sql | sort -r | head -n 1)