使用查找命令选择日期以选择日期

时间:2018-08-30 09:41:08

标签: linux bash scripting

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

找到dir / dir / dir / dir / dir / dir / dir / dir / dir / joseluis.com / ASDFookiwnloadRQ /-名称“ $ date *”

结果->

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

我需要得到2018-07-30

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

3 个答案:

答案 0 :(得分:0)

您必须在这里使用cut吗? Cut不需要正则表达式,因此在这里感觉不像是正确的工具。我认为使用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值匹配的每个值。

答案 1 :(得分: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

答案 2 :(得分:0)

额外方法:

find dir/dir/dir/dir/dir/dir/dir/dir/dir/joseluis.com/ASDFookiwnloadRQ/ -name "$date*" | xargs -n 1 basename | cut -f1 -d_