在 Linux 中获取当前日期的文件?

在 Linux 中获取当前日期的文件?

通常给出当前日期 08/10/2017 的date +%d输出。08但是当我在路径上执行时ls -lrt,日期格式如下Oct 8 15:03,那么,如何获取当前日期的文件?

我正在使用命令

ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'

但它没有给我今天日期(08/10/2017)的文件,尽管它给了我任何一个月的日期 10 - 31 的正确输出。

答案1

这有点作弊,但确实有效。

首先创建一个具有特定时间戳(即午夜)的空参考文件:

touch -d "$(date +%FT00:00:00)" /tmp/midnight

然后查找比该文件更新的文件:

find . -type f -newer /tmp/midnight

如果您想要ls类似的输出find而不仅仅是路径名:

find . -type f -newer /tmp/midnight -ls

如果您想查找与模式匹配的文件XYZ.LOG*

find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls

如果您有 GNU find,您可以绕过临时文件并使用

find . -type f -newermt 0

从午夜开始修改文件。


有关的:为什么*不*解析`ls`?

答案2

您可以使用stat(1)它来获取文件的修改时间,但这不可移植。

在 Linux 上:

$ stat -c %y some_file
2017-09-23 10:24:09.880806666 +0200

$ date -d @$(stat -c %Y some_file) +%d-%m-%Y
23-09-2017

在 BSD 上:

$ stat -f %Sm -t %d-%m-%Y some_file
23-09-2017

答案3

如何获取当前日期的文件?

LS命令可以--time-style选择以特定格式打印时间:

ls -l --time-style=+'%d-%m-%Y' | awk -v d=$(date +%d-%m-%Y) '$6==d'

--time-style=风格
with -l,使用样式 STYLE 显示时间:full-iso、long-iso、iso、locale 或 +FORMAT; FORMAT 的解释类似于 'date';

答案4

你试过了吗:

echo `date +'%Y-%m-%d'`*

相关内容