【问题标题】:Linux | grep date informat "Aug 14"Linux | grep 日期信息“8 月 14 日”
【发布时间】:2020-12-04 05:03:48
【问题描述】:

我正在编写一个脚本,我需要以“8 月 14 日”格式处理今天日期的 ls -lgrep 文件。我将变量中的日期指定为dt=date "+%b %d",但我无法获取文件。

我可以通过什么方式做到这一点?

我的脚本:

#!/bin/bash

#1st Argument i.e., $1 will be file name and 2nd Argument i.e., $2 will be directory path where file is located.

cd $2

command=`ls -l | grep $dt| grep $1`

if 

    [ -z "$command" ]; then

    echo "Critical : File $1 doesn't exists for $dt"
    exit 2


else

    echo "OK : File $1 exists for $dt"
    exit 0

fi

运行脚本:

【问题讨论】:

  • 将 grep 括在引号中并将其转换为命令:` ls -l | grep "$(date "+%b %d")" `
  • 你能把你的问题说清楚一点吗?您是否尝试在文件名或文件内容中查找带有日期的文件?
  • 请注意:Why not parse ls?
  • @kaylum 我正在尝试检查是否存在具有今天时间跨度的特定内容。鲍勃的回答对我有用

标签: linux bash date scripting grep


【解决方案1】:

我的印象是你需要做某事,你选择了一种方式来做这件事,但你在实施这种方式时遇到了问题,导致你提出这个问题。

你需要“列出当前目录下今天的文件”。
作为一种方法,您已经检查了ls -l 输出并且想要渲染它,因此您将今天的日期格式化为“8 月 14 日”。
您的渲染似乎有问题。

正如赛勒斯所说,渲染ls结果不是一个好主意,所以你选择的方式不好。

什么是更好的解决方案?

你可能会使用find,但是由于你只对当前目录感兴趣,你需要限制搜索的深度(你可以使用-maxdepth来实现),所以我建议你按照命令(@ 987654325@给你文件,最多一天前修改过):

find ./ -maxdepth 1 -mtime -1

这是你要找的吗?

编辑:

Kvantour 要求的一个小额外内容:您可能会多次使用mtime 开关来搜索日期范围,例如文件列表,该日期范围至少在一周前被更改,但不到两周前,如下所示:

find ./ -maxdepth 1 -mtime -14 -mtime +7

【讨论】:

  • 如果您可以将其推广到日期范围,这个答案会很棒。
  • @kvantour:我已经相应地调整了我的答案。
【解决方案2】:

引用下面的变量对我有用。

dt="日期'+%b %d'"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2015-04-11
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多