linux - 如何按日期对文件内容进行排序?

标签 linux bash ubuntu terminal

我有一个包含以下内容的文件:

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"

最佳答案

Schwartzian transform :

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/

相关文章:

c++ - 为什么CMake通过相对路径链接外部库?

linux - 使 shell 脚本在调用它们的位置上变得稳健

linux - 回显日期范围的脚本

c - 使用 "tee"会使标准输出变慢

bash - 管道找找

mysql - Linux 桌面上出现奇怪的 MySQL Workbench 错误

linux - crontab 中的 cron 作业不工作

php - 将 Magento 订单导入 Openerp

android - freopen 返回 errno 14 EFAULT : while executing. (arm, linux, android)

Linux 命令行不将 true 作为命令参数