Shell

如何在 AWK 命令中添加多個搜尋

  • June 19, 2020

我正在嘗試搜尋在 6 月、7 月和 8 月創建的文件。我用了這個方法

ls -lrth|awk '/[Jun][Jul][Aug]/ {print}'

但它不起作用。

您可以匹配多個模式,如下所示:

awk '/Jun/ || /July/ || /Aug/' <(ls -lrh)

這將返回 Jun、July 或 Aug 的所有匹配項。您不需要該print語句,因為這是awk預設操作。

作為一般規則,解析 ls 的輸出是一個非常糟糕的主意。做你想做的更好的方法是

stat -c "%n %y" * | grep 2013-0[678]

或者,僅檢查最後一個欄位以防止文件名本身是日期的不太可能的情況:

stat -c "%n %y" *| awk '$NF ~ /2013-0[678]/' 

來自man stat

  -c  --format=FORMAT
         use the specified FORMAT instead of the default; output  a  new‐
         line after each use of FORMAT

  %y     time of last modification, human-readable
  %n     file name

引用自:https://unix.stackexchange.com/questions/92815