如何在字符串中间使用通配符?庆典

时间:2014-06-22 14:54:32

标签: bash filenames

我正在写一个bash脚本

我的文件如下:  file="${nodeID}_00000_19700101010${ts}_udp_filtered.pcap"。是否可以代替00000使用任何5位数字?我想过使用

  

file="${nodeID}_ * _19700101010${ts}_udp_filtered.pcap"

有时我有00001,有时是00004等。

2 个答案:

答案 0 :(得分:4)

这样的东西
 echo "${nodeID}"_[0-9][0-9][0-9][0-9][0-9]_19700101010"${ts}"_udp_filtered.pcap

注意,*[something]不会在引号中展开,因此上面只引用变量。

答案 1 :(得分:0)

for match in ${nodeID}_*_19700101010${ts}_udp_filtered.pcap
do
  #echo $match
  #do something with $match
  #file=$match
done

这将找到目录中的所有匹配项,并允许您对它们执行某些操作。星号将匹配任何字符串,而不仅仅是5位数字。您可以在正则表达式中更具体,但如果您知道文件名的格式,则可以确定*是安全还是需要更具体。