在目录中找到文件名中的匹配项

时间:2017-03-10 22:11:51

标签: linux awk

我在目录中有以下文件

-rw-r--r--. 1 svcamt pharpan 212 Feb 16 17:04 ManPOC_Process_Log.2017_02_16
-rw-r--r--. 1 svcamt pharpan 212 Feb 17 17:04 ManPOC_Process_Log.2017_02_17
-rw-r--r--. 1 svcamt pharpan 271 Feb 18 17:04 ManPOC_Process_Log.2017_02_18
-rw-r--r--. 1 svcamt pharpan 212 Feb 18 17:04 ManPOC_Process_Log.2017_02_19
-rw-r--r--. 1 svcamt pharpan 212 Feb 20 17:04 ManPOC_Process_Log.2017_02_20
-rw-r--r--. 1 svcamt pharpan 334 Feb 21 17:04 ManPOC_Process_Log.2017_02_21
-rw-r--r--. 1 svcamt pharpan 212 Feb 22 17:04 ManPOC_Process_Log.2017_02_22
-rw-r--r--. 1 svcamt pharpan 212 Feb 23 17:04 ManPOC_Process_Log.2017_02_23
-rw-r--r--. 1 svcamt pharpan 213 Feb 24 17:04 ManPOC_Process_Log.2017_02_24
-rw-r--r--. 1 svcamt pharpan 272 Feb 25 17:04 ManPOC_Process_Log.2017_02_25
-rw-r--r--. 1 svcamt pharpan 213 Feb 26 17:04 ManPOC_Process_Log.2017_02_26
-rw-r--r--. 1 svcamt pharpan 213 Feb 27 17:04 ManPOC_Process_Log.2017_02_27
-rw-r--r--. 1 svcamt pharpan 213 Feb 28 17:04 ManPOC_Process_Log.2017_02_28

我想要所有早于2017_02_26的文件。这里的旧版本意味着25日,24日等。这是我目前为止的代码

dir='/logs/Manpoc/'
check=`date -d "- 12 days" "+%F"`
for f in ls "$dir"*
 do
   var= "$($f|awk '{print $9}'| cut -d'_' -f 2)"
     if [ $var < $check ]
      then
        echo $f
     fi
done

这不能给我预期的结果。如何获得所需的记录?

1 个答案:

答案 0 :(得分:2)

只需使用find:

find /logs/Manpoc -type f -ctime +12

如果您不想要子目录:

find /logs/Manpoc -maxdepth 1 -type f -ctime +12

使用一些格式:

find /logs/Manpoc -type f -ctime +12 -printf "%f\n"