2015-12-08 74 views
0

我正在尝试自动化一个进程,但希望使其更高效和更智能。我自动从我的电子邮件每日下载文件,电子邮件的命名约定如下:使用“like”通配符匹配文件名

pending_file_“CURRENT_DATE”的.xlsx

正如预期的那样,将这个文件夹(如CURRENT_DATE MMDDYYYY,即pending_file_12082015.xlsx。)随着大量名称非常类似的文件变大,只有一个标题内的变化,在这种情况下,变化将是当前日期。

我想确保我抢对应于当前日的文件,这是我到目前为止有:

cd Pending_File 
date=$(date.exe +"%m%d%Y") #assigns the current date to the date variable in the form of mmddYYYY 

if [[ -f *"$date"* ]]; then 
    scp pending_file_"$date".xlsx [email protected]; 
    echo "I have successfully completed today's file!" 
else 
    echo "Could not find today's file!" 
fi 

目前,如果我执行我的代码,它总是执行else语句即使我的pending_file文件夹包含一个名为pending_file_“current_date”.xlsx的文件。我的期望是date = 12082015,它也包含在文件pending_file_12082015中,因此if语句将返回true,因为[-f “$ date”]能够匹配文件名中的日期字符串。

+0

这是什么调用'date.exe'(窗口之嫌)疯狂的外壳,但认为它可以做聪明的bash像事情? –

+0

嗨马克 - 不确定是否讽刺,严重关切或其他。我只是试图自动执行日常任务,但我的shell知识几乎没有。 – CjRobin

+1

这是一个问题。它是什么外壳? –

回答

0

这将工作:

if [[ -f "pending_file_${date}.xlsx" ]]; then 
    scp ... 
fi 

本作将会:

for f in *$date*; do 
    scp "$f" ... 
done 
+0

这个按预期工作,非常感谢你! – CjRobin