这是我的剧本
data_dir="/home/data"
shopt extglob
files=!($data_dir/*08142014*)
echo ${files[@]}
for file in $files[@]
do
#blabla
done
/ home / data包含文件名中包含不同日期信息的多个文件,因此我应该能够获得不包含" 08142014"的文件列表。
但是一直得到语法错误。似乎文件只是"!(/ home / data / 08202014 )",而我想要一个文件名列表。
我错过了什么吗?感谢
答案 0 :(得分:4)
您可以使用:
data_dir="/home/data"
shopt -s extglob
files=($data_dir/!(*08142014*))
for file in "${files[@]}"
do
echo "$file"
done
extglob
,您需要使用shopt -s extglob
答案 1 :(得分:1)
您可以使用 - >
files=`ls $data_dir | grep -v 08142014`