我在一些模式后面有一组文件名。我需要在文件名字符串中插入日期。现在,我还有一些文件遵循略有不同的模式。我想知道单个字符串如何匹配这两个要求。
例如。文件名如下:
abcTrade_proj.dat
abcPosition_proj.dat
abcAccount_proj.dat
我使用下面的字符串来构建像abcTrade_yyyymmdd_proj.dat
${filename%_*}_${DATE}_${filename#*_}
现在,除了上面的文件模式,我有模式:
abc_pqr_Account_proj.dat
abc_pqr_Trade_proj.dat
我需要做的就是将字符串剪切到最后_
,插入日期并附加_
之后的字符串,用于两种文件模式。
两种情况都有解决方案吗?
答案 0 :(得分:1)
如果可能,您可以使用sed
构建新名称,如下所示:
DATE=$(date +%Y%m%d)
echo "abcTrade_pqr_proj.dat" | sed "s/^\(.*\)_\([^_]*\)/\1_${DATE}_\2/g"
导致:
abcTrade_pqr_20140101_proj.dat