【问题标题】:How to get files do not match a pattern如何获取文件与模式不匹配
【发布时间】:2014-08-21 02:30:31
【问题描述】:

这是我的脚本

data_dir="/home/data"
shopt extglob
files=!($data_dir/*08142014*)
echo ${files[@]}

for file in $files[@]
do 
  #blabla
done

/home/data 包含多个文件名中具有不同日期信息的文件,因此我应该能够获得不包含“08142014”的文件列表。

但一直get语法错误。似乎文件只是“!(/home/data/08202014)”,而我想要一个文件名列表。

我错过了什么吗?谢谢

【问题讨论】:

标签: bash shell


【解决方案1】:

你可以使用:

data_dir="/home/data"
shopt -s extglob
files=($data_dir/!(*08142014*))

for file in "${files[@]}"
do 
  echo "$file"
done
  • 要设置extglob,你需要使用shopt -s extglob
  • 要设置数组,您的语法不正确
  • 检查数组如何正确迭代

【讨论】:

    【解决方案2】:

    你可以使用->

    files=`ls $data_dir | grep -v 08142014`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2015-02-05
      • 2012-01-21
      • 2016-10-01
      • 2015-07-08
      • 2017-07-31
      • 2019-09-22
      相关资源
      最近更新 更多