首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OSX Bash脚本中检索最后修改的时间

在OSX Bash脚本中检索最后修改的时间
EN

Stack Overflow用户
提问于 2015-04-24 00:08:19
回答 2查看 166关注 0票数 0

很抱歉,如果这是一个简单的问题,但我刚刚开始使用Bash脚本,我的Google技能正在让我失望。我正在编写一个脚本,它最终将检查目录中每个文件的最后修改时间,如果一个文件最后一次修改>3天前,那么用gzip压缩该文件。我现在可以在这里用我的脚本打印出最后修改的时间:

代码语言:javascript
运行
复制
  1 !#/bin/bash
  2 echo "Enter directory"
  3 
  4 read directory
  5 
  6 for entry in "$directory"/*
  7 do
  8      stat -f "%Sm" "$entry"
  9 done

把时间打印得很好:

代码语言:javascript
运行
复制
Randalls-MacBook-Pro:bash_scripts randallbanks$ ./print_last_modified.sh 
./print_last_modified.sh: line 1: !#/bin/bash: No such file or directory
Enter directory
..
Apr  6 13:12:21 2015
Apr 19 18:50:26 2015
Apr 14 11:29:06 2015
Apr  7 12:26:37 2015
Apr 15 16:05:17 2015
Apr  6 16:28:06 2015
Apr  6 12:28:40 2015
Apr  6 12:28:40 2015
Apr  6 12:28:40 2015
Apr  6 12:28:40 2015
Apr 23 17:03:03 2015

但我很难弄清楚如何存储或解析这些文件,这样我就可以检查它们上一次修改的时间是否超过3天前。我该怎么做呢?

编辑:额外的问题:它是怎么回事,显然没有认出我的头?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 00:18:27

若要上一次修改3天或更多天前的gzip文件,请使用:

代码语言:javascript
运行
复制
find "$directory" -mtime +2 -type f -exec gzip {} \;

如果您的find足够现代,请使用:

代码语言:javascript
运行
复制
find "$directory" -mtime +2 -type f -exec gzip {} +

它是如何工作的

  • find "$directory" 这将启动find,在$directory下的目录树中查找文件。
  • -mtime +2 这查找修改超过2天的文件。(超过2意味着三个或更多)。有关man find如何计算年龄舍入到天数的详细信息,请参阅find
  • -type f 这将find限制为查找常规文件。
  • -exec gzip {} \; 这将告诉find将找到的文件gzip
票数 1
EN

Stack Overflow用户

发布于 2015-04-24 00:19:17

你的“砰”是一声巨响。它应该是#!;它是!#

OS上的find命令(通常是BSD)可以执行您想要的操作。-newermt根据字符串中指定的时间检查修改时间,包括"3 days ago"这样的字符串。

所以:

代码语言:javascript
运行
复制
find . -not -newermt "3 days ago" -exec gzip {} \;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29836527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档