来自目录名称的Grep yyyy-mm

问题描述 投票:0回答:3

快速问题,我有这个find子句可以在我的外部硬盘驱动器中找到备份目录。

pi@raspberrypi:/media/pi/WD/HS_BACKUP $ find . -depth -maxdepth 2 -type d -name "20*"
/media/pi/WD/HS_BACKUP/2019-12-26_22-30-01
/media/pi/WD/HS_BACKUP/2019-12-27_22-30-01
/media/pi/WD/HS_BACKUP/2020-01-29_23-00-02
/media/pi/WD/HS_BACKUP/2020-02-05_23-00-01
/media/pi/WD/HS_BACKUP/2020-02-12_23-00-01
/media/pi/WD/HS_BACKUP/2020-02-19_23-00-01
/media/pi/WD/HS_BACKUP/2020-02-26_23-00-01

我需要grep目录的yyyy-mm部分(例如2020-02),理想的结果应该是。

2019-12
2019-12
2020-01
2020-02
2020-02
2020-02

我该怎么做?我用awk作为分隔符尝试了[/_],但它做的工作不正确。

regex bash awk sed text-processing
3个回答
0
投票

[能否请您尝试以下。没有测试过,因为我没有像OP这样的目录结构,应该可以,但是。

find . -depth -maxdepth 2 -type d -name "20*" | awk 'BEGIN{FS="/"} match($NF,/^[0-9]{4}-[0-9]{2}/){print substr($NF,RSTART,RLENGTH)}'

0
投票

您需要的grep表达式是:

find ... | egrep --only-matching '[[:digit:]]{4}-[[:digit:]]{2}'

0
投票

查找,grep,awk或sed在这里是不必要的。将printf与全局框一起使用:

printf '%.7s\n' 20*/
© www.soinside.com 2019 - 2024. All rights reserved.