Таким образом, у меня есть эта папка фильмов, которая похожа
Current
movie1 (1962).mkv
movie 2b (1993)
movie 2b (1993) cd1.mp4
movie 2b (1993) cd1.srt
movie 3 (2019).avi
movie 1942 (2012).mkv
И я хотел бы переместить их в другую папку, которая содержит структуру папок к году с правильными фильмами в каждой папке. Если существует подпапка как с фильмом 2b, я не возражаю той папки, разделен или сохранен - независимо от того, что легче, пока это входит в правильный год. Источник и место назначения находятся в том же разделе, таким образом, я использовал бы mv, чем rsync.
Sorted
1962
1993
2012
2019
Я добрался настолько далеко на основе другого вопроса/ответов на форуме, но я знаю, что это неправильно, потому что я не знаю, как разделить скобки с года, и я не знаю, как указать источник и папку назначения.
for f in *.*; do
if [ -f "$f" ] # does file exist?
then
dir=$(echo "$f" | grep -o "([0-9][0-9][0-9][0-9])" | head -1)
if [ "$dir" ] # check if string found
then
mkdir -p "$dir" # create dir
mv "$f" "$dir" # move file into new dir
else
echo "INCORRECT FILE FORMAT: \""$f"\"" # print error if file format is unexpected
fi
fi
done
Какие-либо предложения?
Используя BASH_REMATCH к обратной ссылке соответствовал подвыражению:
#!/bin/bash
for i in movies/*; do
if [[ $i =~ \(([0-9]{4})\) ]]; then
mkdir -p year/${BASH_REMATCH[1]}
mv -t year/${BASH_REMATCH[1]} "$i"
else
echo "Sort panic!"
fi
done