尝试同时使用 awk 和 date 命令

asa*_*f92 1 linux awk date quoting files

我试图ls -l仅使用和过滤当月最后修改的文件。我正在运行:ls -l | awk '{if($6 == date +%b) print$0;并收到语法错误。

我一直在互联网上到处寻找关于如何在 awk 和脚本 bashing 中正确使用引号的简单规则,但我无法理解它。尽管我有编程经验,但我对此感到非常困惑,因此关于这些问题的一般答案比处理这种特定情况的具体答案更受欢迎。

Ste*_*ris 5

您可能不想date在代码中多次调用;它在运行期间是“恒定的”。所以我们可以预先设置它并将其作为变量传递

例如

ls -l | awk -v month="$(date +%b)" '$6 == month { print }'
Run Code Online (Sandbox Code Playgroud)

请注意,如果您有一个从本月开始但已有一年的文件(例如从 2015 年 8 月开始),或者在月份名称包含空格的区域设置中,或者如果文件名包含换行符,则此操作将会失败。 解析 ls 的输出充满危险