У меня есть несколько папок, в которых запущен скрипт для переименования некоторых файлов.До тех пор, пока в каждой папке не было около 300 файлов, проблем не было, но теперь цикл for просто не видит все файлы.
У меня есть файл Folder_List.txt со ссылкамико всем папкам, которые я хочу проанализировать, и к другой, которая архивирует уже переименованные файлы, чтобы она не дублировалась.
Каждый видеофайл имеет 2 связанных файла, поэтому он все равно переименовал 3 файла, а затем переходит к следующему, но теперь, как только он попадает в файл с именем S01E099, он перестает переименовываться, и я не могувыясните, почему.
#!/bin/bash
#Setup the folder parser
folder="/mnt/user/Storage/Google Drive/Server Files/Downloader/Folder_List.txt"
while IFS=$'\r' read path; do
#Check to ensure the location exists
if [[ -d "$path" ]]
then
cd "$path"
#Declare Variable
c=0
filename_old=0
archive="/mnt/user/Storage/Google Drive/Server Files/Downloader/Episodes_archive.txt"
#Loop
for i in *; do
#Gets the extension
ext=$(echo $i | awk -F '.' '{print $NF}')
#Gets Season
season=$(echo "$i" | awk -F 'E' '{print $1}')
#Gets title
title=$(echo $i | awk -F ' - ' '{print $2}')
title=$(echo $title | awk -F '.' '{print $1}')
#Checks for episode matches
if [ ! "$title" == "$filename_old" ]
then
filename_old=$title
((c++))
fi
#Gets the Episode number (needs to be after the episode match check)
epnum=$(printf %02d $c)
#Creates final filename
filename_final=$season"E"$epnum" - "$title.$ext
#Creates the naming structure for archiving
filename_archive=$path$season"E"$epnum.$ext
#Check if file was already renamed
if grep -Fq "$filename_archive" < "$archive"
then
#If file was already renamed do:
continue
else
#Add renamed file to archive
echo "$filename_archive"$'\r' >> "$archive"
echo "$filename_final renamed"
#Rename File
mv "$i" "$filename_final"
fi
done
fi
done < "$folder"
Если это поможет что-то прояснить, файлы, которые должны быть переименованы, отформатированы как: S01E789 - эпизод title.mkv
Следует просто переименовать все файлы впапка, но по какой-то причине она останавливается на полпути.Любая помощь будет оценена.