我将以下日期和时间另存为文件名:
/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。
有更好的解决方案吗?
答案 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)