使用 sed/echo 组合填充数组

使用 sed/echo 组合填充数组

我正在尝试重命名多个包含日期的文件。我想将日期拆分为年、月和日,然后在目录树中创建一个新文件名,例如year/month-year/filename_yearmonthday.extension

我已经成功创建了一个 sed 表达式来过滤掉日期并将其写回到三个单独的变量中。我现在想将值插入到数组中,其中 [0] 是年份,[1] 是月份,[2] 是日期。我尝试了以下声明:

#!/bin/bash
for i in *
do 
myarray=( $(echo ${i} |  \
  sed -n 's/.*\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\).*/\1 \2 \3/p' ) )
done

但脚本抱怨语法错误:包含 sed 表达式的第三行中出现“(”意外(期望“done”)。

***编辑日期的位置不断变化,所以我不能只按字符串分割。

到目前为止,我什至没有成功完成这样的事情:

#!/bin/bash
myarray=(1 2 3 4)
echo ${myarray[@]}

它总是告诉我“语法错误:”(“意外(期望“完成”)”在包含数组的行中。***结束

如果我直接在命令行中执行此操作,它就可以工作。谢谢您的帮助。

答案1

如果是我,我会像这样加载数组:

#!/bin/bash

string="file_20160825_namegoeson"

myarray[0]="${string:5:4}"
myarray[1]="${string:9:2}"
myarray[2]="${string:11:2}"

echo "${myarray[0]}"
echo "${myarray[1]}"
echo "${myarray[2]}"

相关内容