如何使用正则表达式从路径中找到文件名?

时间:2017-01-11 04:23:59

标签: bash

我的目录中包含许多文件,如:

IF_OCS0003STS20170109144902.csv  
IF_OCS0005STS20170109151234.csv
IF_OCS0007STS20170109171408.csv

上述文件包含name_date_time.csv格式。我试图通过检查文件是否存在而将每个文件存储在变量中。

下面的代码段仅用于检查样本的一个文件,但它根本不起作用:

#!/bin/bash

FILE_OCS0003STS= "$(basename ./cdr/IF_OCS0003STS`date -d "yesterday" '+%Y%m%d'`*.csv)";

if [ -e "./cdr/$FILE_OCS0003STS" ];
then
   echo "File $FILE_OCS0003STS exist."
else
   echo "File $FILE_OCS0003STS does not exist" >&2
fi

1 个答案:

答案 0 :(得分:1)

我这里没有合适的shell来测试它,但是值得尝试一下:

DATESTRING=`date -d 'yesterday' '+%Y%m%d'`
FILE_OCS0003STS=`ls ./cdr/ | grep $DATESTRING`

可能应该使用find而不是ls,但是如果没有合适的shell来测试它,并且长时间没有使用bash,我肯定会得到错误的语法。像

这样的东西
FILE_OCS0003STS=$(basename `find ./cdr/ -name "$DATESTRING*"`)