我有一个包含以下内容的文件:
linux-4.4.1.tar.gz 31-Jan-2016 19:34 127M
linux-4.4.2.tar.gz 17-Feb-2016 20:35 127M
linux-4.4.3.tar.gz 25-Feb-2016 20:13 127M
linux-4.4.4.tar.gz 03-Mar-2016 23:16 127M
linux-4.4.5.tar.gz 09-Mar-2016 23:44 127M
linux-4.4.6.tar.gz 16-Mar-2016 16:28 127M
linux-4.4.7.tar.gz 12-Apr-2016 16:13 127M
linux-4.4.8.tar.gz 20-Apr-2016 07:00 127M
linux-4.4.tar.gz 10-Jan-2016 23:12 127M
linux-4.5.1.tar.gz 12-Apr-2016 16:08 128M
linux-4.5.2.tar.gz 20-Apr-2016 07:00 128M
linux-4.5.tar.gz 14-Mar-2016 04:38 128M
我想按日期过滤此内容,但我不确定我该怎么做,到目前为止我只有以下代码来转换日期以进行比较但我不确定如何在用于过滤文件的 bash 代码:
date -d 20-Apr-2016 +"%Y%m%d"
最佳答案
while read -r line; do
d=$(date -d "${line:24:11}" +"%Y%m%d")
echo "$d $line"
done < file | sort -k1,1n | cut -d " " -f 2-
输出:
linux-4.4.tar.gz 10-Jan-2016 23:12 127M linux-4.4.1.tar.gz 31-Jan-2016 19:34 127M linux-4.4.2.tar.gz 17-Feb-2016 20:35 127M linux-4.4.3.tar.gz 25-Feb-2016 20:13 127M linux-4.4.4.tar.gz 03-Mar-2016 23:16 127M linux-4.4.5.tar.gz 09-Mar-2016 23:44 127M linux-4.5.tar.gz 14-Mar-2016 04:38 128M linux-4.4.6.tar.gz 16-Mar-2016 16:28 127M linux-4.4.7.tar.gz 12-Apr-2016 16:13 127M linux-4.5.1.tar.gz 12-Apr-2016 16:08 128M linux-4.4.8.tar.gz 20-Apr-2016 07:00 127M linux-4.5.2.tar.gz 20-Apr-2016 07:00 128M
关于linux - 如何按日期对文件内容进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36826754/