我正在尝试重命名多个包含日期的文件。我想将日期拆分为年、月和日,然后在目录树中创建一个新文件名,例如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]}"