Macos 在OSX Bash脚本中检索上次修改的时间
很抱歉,如果这是一个简单的问题,但我对Bash脚本还不熟悉,我的谷歌技能让我失望。我正在尝试编写一个脚本,最终将检查目录中每个文件的上次修改时间,如果文件上次修改时间>3天前,则使用gzip压缩该文件。我当前可以在此处使用脚本打印上次修改的时间:Macos 在OSX Bash脚本中检索上次修改的时间,macos,bash,Macos,Bash,很抱歉,如果这是一个简单的问题,但我对Bash脚本还不熟悉,我的谷歌技能让我失望。我正在尝试编写一个脚本,最终将检查目录中每个文件的上次修改时间,如果文件上次修改时间>3天前,则使用gzip压缩该文件。我当前可以在此处使用脚本打印上次修改的时间: 1 !#/bin/bash 2 echo "Enter directory" 3 4 read directory 5 6 for entry in "$directory"/* 7 do 8 stat -
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
这可以很好地打印出时间:
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天前。我该怎么办
编辑:额外问题:为什么它在标题中明显没有识别出我的shebang?对于上次修改3天或更多天前的gzip文件,请使用:
find "$directory" -mtime +2 -type f -exec gzip {} \;
如果您的find
足够现代,请使用:
find "$directory" -mtime +2 -type f -exec gzip {} +
工作原理
这将启动查找“$directory”
在find
下的目录树中查找文件$directory
这将查找修改时间超过2天的文件。(超过2表示三个或更多)。有关-mtime+2
如何计算四舍五入到天的年龄的详细信息,请参见find
man find
这将-类型f
限制为查找常规文件find
-exec gzip{}代码> 这会告诉
到find
找到的文件gzip
#代码>;这是#代码>
OSX(通常是BSD)上的find
命令可以完成您想要的任务。-newermt
根据字符串中指定的时间检查修改时间,包括“3天前”
等字符串
因此:
谢谢你,约翰!我很感激能问一下“+2”参数到底在做什么吗?为了测试的目的,我试图修改它,以检查大于2分钟的文件编辑:刚刚看到您的编辑。谢谢@RandyBanks顺便说一句,如果你想让年龄以分钟为单位,你可以使用-mtime
。所以,-mtime+2
意味着超过两分钟。助记符解决方案:shebang是hash bang的缩写,其中
是hash,而代码>是砰的一声。因此,shebang就是#代码>。哈哈。。。嗯。谢谢你,肯!
find . -not -newermt "3 days ago" -exec gzip {} \;