使用查找命令剪切日期以选择日期[关闭]

问题描述 投票:-1回答:3

我需要从日期中删除类似的结果,例如:

find dir / dir / dir / dir / dir / dir / dir / joseluis.com / ASDFookiwnloadRQ / -name“$ date *”

Result->

 /dir/dir/dir/dir/dir/dir/dir/dir/dir/joseluis.com/ASDFookiwnloadRQ/2018-07-30_TRANSACTION_123456789.jluis

我需要得到2018-07-30

我尝试使用find + cut,但由于文件结构不同而无法实现。

linux bash scripting
3个回答
0
投票

你必须在这里使用切割?剪切不采用正则表达式,因此它不像这里的正确工具。我认为用grep可能会更好:

假设日期值始终为YYYY-MM-DD,您可以:

$ find . | grep -P '\d{4}\-\d{2}\-\d{2}'  -o
2015-01-30
2016-11-10
2016-10-18
2016-12-06
2017-03-15
2017-03-03
2018-07-30

这将获得与正则表达式中的YYYY-MM-DD值匹配的每个值。


0
投票

使用awk,您可以在最后一次斜线后获得字符串

cut字符串的前10个字符串

echo "/dir/dir/dir/dir/dir/dir/dir/dir/dir/joseluis.com/ASDFookiwnloadRQ/2018-07-30_TRANSACTION_123456789.jluis" | awk -F "/" '{print $NF}' | cut -c 1-10

0
投票

额外的方法:

find dir/dir/dir/dir/dir/dir/dir/dir/dir/joseluis.com/ASDFookiwnloadRQ/ -name "$date*" | xargs -n 1 basename | cut -f1 -d_
© www.soinside.com 2019 - 2024. All rights reserved.