#!/bin/bash
# When a match is not found, just present nothing.
shopt -s nullglob
files=(*.wav)
if [[ ${#files[@]} -eq 0 ]]; then
echo "No match found."
fi
for file in "${files[@]}"; do
# We get the date part
find_date=$(stat -c %y $file | awk '{print $1}')`
for t in "${parts[@]}"; do
IFS="-." read -ra parts <<< "$file"
if [[ $t == [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] ]]; then
file_date=$t
break
fi
done
# If a value was not assigned, then show an error message and continue to the next file.
# Just making sure there is nothing in Array and date before it moves on
if [[ -z $file_date ]]; then
continue
fi
file_year=${file_date:0:4}
file_month=${file_date:6:2}
mkdir -p "$file_year/$file_month"
# -- is just there to not interpret filenames starting with - as options.
echo "Moving: ./"$file "to: " "./"$file_year"/"$file_month
mv "$file" "$file_year/$file_month"
done
У меня есть файлы, которые являются .wav .... Я хочу поместить файлы в массив, как я, а затем Stat -c% y filename | awk $ 1, который дает мне YYYY- MM-DD, а затем я хочу поместить дату в массив, чтобы затем установить 2 переменные Год и Месяц, чтобы затем я мог сделать DIR Year/Month или если DIR уже есть, то просто mv. который является mkdir -p ... Geting ошибки в моем коде, но я не думаю, что я читаю файл в моем массиве правильно.Ошибка в моем коде
25: продолжаются: смысл только в for',
время «или 'до» цикла мое эхо заявление Moving: ./OUT117-20092025-5845.wav к: .//
что бы некоторые вопросы синтаксиса .. Я новичок в этом –
Пожалуйста, проверьте отредактированный ответ. – anubhava
./awktest.sh: строка 14: неожиданный EOF при поиске соответствия '' ' ./awktest.sh: строка 39: синтаксическая ошибка: неожиданный конец файла. Теперь я редактирую код выше и запускал его –