日付を含む複数のファイルの名前を変更しようとしています。日付を年、月、日に分割し、ディレクトリツリーにyear/month-year/filename_yearmonthday.extensionなどの新しいファイル名を作成したいと思います。
日付をフィルタリングして3つの別々の変数に書き換える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式を含む3行目に予期しない「(」があります(「完了」が予想されます)。
***修正日付の位置が変わり続けて文字列に分割できません。
これまで私はこのようなことをしたことがありません。
#!/bin/bash
myarray=(1 2 3 4)
echo ${myarray[@]}
配列を含む行では、常に「構文エラー:」(「予期しない(予期された「完了」)」)と表示されます。***END
コマンドラインから直接これを行うと機能します。助けてくれてありがとう。
答え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]}"