首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在变量bash脚本之后使用通配符

问在变量bash脚本之后使用通配符
EN

Unix & Linux用户
提问于 2019-10-30 10:12:08
回答 1查看 732关注 0票数 1

我一直试图制作一个脚本,将所有csv文件合并为一个月度文件。下面的脚本不起作用,它会产生以下错误:

代码语言:javascript
复制
awk: fatal: cannot open file `/ibv_ftp/merged/folder/file201910*.csv' for reading (No such file or directory)

这是脚本不能正常工作的示例。它查找"file201910*.csv“文件,而不是所有"file20191030.csv”文件。每一天都有自己的文件。

To要清楚。我遇到的问题是asterix不能作为通配符使用。而是在文件名中使用它。在变量后面调用时,它似乎不起作用。即使以不同的方式使用该变量,也可以使用/不带引号,或者使用或问号代替asterix。它们都显示为文件名的一部分。

代码语言:javascript
复制
#  Defines the current year     
y=$(date +'%Y')
# Choose which months to be merged
for i in {06..10}
  do
  # Defines year and month
   ym=$(date +'%Y')"$i"
   # monthly
   awk 'FNR==NR||FNR>2' /ibv_ftp/merged/folder/file"$ym"*.csv > /ibv_ftp/merged/monthly/file"$ym".csv
done

脚本调用/ibv_ftp/merged/文件夹/file201910*..csv或file201910.csv或file201910??.csv以前的脚本是这样的。它使用了不同的文件,如下所示:

代码语言:javascript
复制
today=$(date +'%Y%m%d')
echo $today
# daily

awk 'FNR==NR||FNR>2' /ibv_ftp/folder/iv1_"$today"_*.csv > /ibv_ftp/merged/daily/folder/file"$today".csv

在这个例子中,文件被称为iv1_20191030_111500.csv (最后一部分是时间戳)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-10-30 10:56:21

错误告诉您,没有任何东西与模式/ibv_ftp/merged/folder/file201910*.csv匹配。(它这样做是因为当shell无法展开通配符(如* )时,它通常将其保留为文字。

查看您认为确实有效的代码,源模式从/ibv_ftp/folder/开始,因为您的非工作代码使用/ibv_ftp/merged/folder/。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/549467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档