Цикл For не находит все файлы в каталоге - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть несколько папок, в которых запущен скрипт для переименования некоторых файлов.До тех пор, пока в каждой папке не было около 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

Следует просто переименовать все файлы впапка, но по какой-то причине она останавливается на полпути.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 12 апреля 2019

Я должен был удалить несколько файлов ранее или что-то еще, потому что в архиве уже был файл 115, поэтому он пропускал все найденные файлы, потому что считал, что они уже были переименованы.

Большое спасибо @choroba за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...