从bash脚本中的文件名中提取日期(YYYYMMDD)

时间:2018-03-12 11:34:15

标签: bash

我正在尝试从文件名中提取日期。这就是我的工作:

find ${DPPATH}/${DBNAME}*.dmp.gz ${MTIMECMD} -type f -exec

(执行一个动作。这可以按预期工作。)

我想要做的是从通过find命令找到的文件名中提取日期(它将是YYYYMMDD格式),然后使用该日期传递给find命令,其中操作是进行。

我试过这个尝试在脚本中的find命令上方获取日期,希望提取:

MOVEDATE=echo ${DPPATH}/${DBNAME}*.dmp.gz ${MTIMECMD} -type f |grep -Eo '[[:digit:]]{8}';

编辑,尝试了这个建议:

${MOVEDATE}=echo ${DPPATH}/${DBNAME}*.dmp.gz ${MTIMECMD} -type f |grep -Eo '[[:digit:]]{8}'\;

结果是:

=echo: not found

然后,将$ MOVEDATE传递给find命令,但没有运气。

我在脚本(-x)中使用'debug'选项,结果是:

<filename>  cannot execute [Permission denied]

文件名的名称如下:

blah_blah_blah_exp_01_20180221_0100.dmp.gz:

上面的MTIMECMD只是一个查找超过x小时数的文件的变量。

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你想做的是这样的事情:

not

它告诉bash在括号中为变量MOVEDATE=$(ls -1 ${DPPATH}/${DBNAME}*.dmp.gz ${MTIMECMD} |grep -Eo '[[:digit:]]{8}') 分配命令的结果。