unix中两个文件的时间戳差异

时间:2017-08-07 10:04:36

标签: linux bash shell

我需要使用shell脚本获取指定目录中最新文件和最旧文件之间的时差。任何人都可以帮助

作为一个例子,让我们看看下面的场景,我有一个包含多个文件和目录的目录,我需要得到这个目录中最新和最旧文件之间的确切时差。

这是使用Memory : ------------------------- ... anArray point to 0x222 arr point to 0x222 ... -------------------------

的directroy和包含的文件和目录
ls -lrt

如上所述,最新和最旧的文件如下

最新档案:Macbooks-MacBook-Pro:Downloads ik$ ls -lrt total 682992 drwxr-xr-x 27 ik staff 918 Oct 7 23:09 Temp -rw-r--r--@ 1 ik staff 169544881 Oct 8 00:39 filmora-mac_full2074.dmg -rw-r--r--@ 1 ik staff 445446 Oct 13 07:46 4670-lecture7-plsql.pptx -rw-r--r--@ 1 ik staff 166136 Oct 13 09:29 IT 5080 Devops Module Outline.pdf -rw-r--r--@ 1 ik staff 13547 Oct 13 09:34 IoTProjectGroups_2018_s2.docx -rw-r--r--@ 1 ik staff 15546624 Oct 13 09:58 node-v8.12.0.pkg -rw-r--r--@ 1 ik staff 80533 Oct 16 17:39 CC_Presentation1.pptx -rw-r--r--@ 1 ik staff 186791 Oct 16 23:14 Assignment_2018.pdf drwxr-xr-x@ 3 ik staff 102 Oct 17 15:12 Mountain Duck.app -rw-r--r--@ 1 ik staff 456243 Oct 17 20:31 canvasjs.min.js drwx------@ 39 ik staff 1326 Oct 18 05:31 SolarIOT1_files -rw-r--r--@ 1 ik staff 43637 Oct 19 19:03 logo-fav.png -rw-r--r--@ 1 ik staff 7246 Oct 19 19:05 rsz_logo-fav.png

最早的文件:-rw-r--r--@ 1 ik staff 7246 Oct 19 19:05 rsz_logo-fav.png

所以一旦我运行这个程序,我需要得到时差: - > 11天,18小时,26分钟和0秒

2 个答案:

答案 0 :(得分:1)

假设您想要修改时间的差异,这就可以解决问题:

find .  -maxdepth 1 -type f -printf '%T@\n' | sort -n | awk 'NR==1 {first=$0} END{print $0-first}'
  • -maxdepth 1 - 仅在当前目录中搜索
  • -type f - 仅搜索文件
  • -printf '%T@\n' - 使用特定格式打印。在这种情况下,它以秒为单位打印修改时间。
  • NR==1 {first=$0} - 如果是第一行,请将该行保存在变量
  • END{print $0-first} - 当达到输入的结尾时,减去这一行的最后一行(最后一行)

答案 1 :(得分:0)

我认为这会对你有所帮助,并会在第二次显示差异

代码:

 echo `stat -c%Y first_file` - `stat -c%Y second_file` | bc

你可以除以60来学习#分钟 再分60来学习#hours 并除以24来学习#days