shell获取指定日期前(后)N天日期


shell获取指定日期前n天的数据:

shell获取指定日期前1天的数据:

date -d "20151001  1 days ago "  "+%Y%m%d"

date -d "20151001  1 days ago "  "+%Y%m%d"

shell获取指定日期后n天的数据:

shell获取指定日期后1天的数据:

date -d "20151001  1 days "  "+%Y%m%d"

例子:

参考资料:

http://bbs.chinaunix.net/thread-3588499-1-1.html

http://www.cnblogs.com/xd502djj/p/4087949.html

http://blog.csdn.net/runming918/article/details/7223520

可以使用`find`命令和`stat`命令来查找修改日期大于指定日期的所有文件,并获取修改日期最早的文件。假设指定日期是`2021-08-25`,以下是实现的步骤: 1. 使用`stat`命令将指定日期转换为UNIX时间戳: ``` date -d "2021-08-25" +%s ``` 2. 使用`find`命令查找修改日期大于指定日期的所有文件,并将它们的修改日期和文件名输出到一个临时文件: ``` find . -type f -newermt "2021-08-25" -printf "%T@ %p\n" > temp ``` 此命令将查找当目录及其子目录中所有文件,并输出它们的修改日期和文件名到一个名为`temp`的文件中。`-newermt`选项用于指定要查找的修改日期大于指定日期的文件,`-printf`选项用于指定输出格式,其中`%T@`表示以UNIX时间戳格式输出修改日期。 3. 使用`sort`命令对临时文件中的条目按时间戳进行排序,并仅保留第一行: ``` sort -n temp | head -n 1 ``` 此命令将对临时文件`temp`进行排序,并将最早的修改日期和文件名输出到终端。 4. 如果找到了文件,则使用`cut`命令提取文件名: ``` sort -n temp | head -n 1 | cut -d' ' -f2- ``` 此命令将提取输出的第一行中的文件名,并将其输出到终端。 5. 如果没有找到文件,则输出“没有找到”: ``` if [ ! -s temp ]; then echo "没有找到"; fi ``` 此命令使用`if`语句检查临时文件`temp`是否为空,如果为空则输出“没有找到”。 将以上命令组合在一起,可以实现查找修改日期大于指定日期的所有文件,并获取修改日期最早的文件的功能。完整的命令如下: ``` #!/bin/bash # 指定日期转换为UNIX时间戳 timestamp=$(date -d "2021-08-25" +%s) # 查找修改日期大于指定日期的所有文件,并输出修改日期和文件名到临时文件 find . -type f -newermt "2021-08-25" -printf "%T@ %p\n" > temp # 如果找到文件,则输出修改日期最早的文件名 if [ -s temp ]; then earliest_file=$(sort -n temp | head -n 1 | cut -d' ' -f2-) echo "修改日期最早的文件是:$earliest_file" else echo "没有找到" fi # 删除临时文件 rm -f temp ``` 您可以将此脚本保存为`.sh`文件并在终端中运行。请注意,这里的日期格式必须是YYYY-MM-DD,并且修改日期是指文件的最后修改时间,而不是创建时间。如果您需要查找创建日期大于指定日期的文件,则需要使用`-newerct`选项而不是`-newermt`选项。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值