@skyspirit

Где ошибка скрипта?

Всем привет. Помогите, пожалуйста, найти баг в скрипте:
Задача скрипта найти соответствие файлов в папке Загрузки и в папке конкретного сериала, далее переместить все файлы из Загрузок в нужную папку. Ничего глобального.

Так вот, баг в том, что, если есть 2 обновления сериалов одновременно подходящих под условия, то скрипт из Загрузок тащит все файлы(нужного и ненужного сериалов) в первую соответствующую папку сериала.

#!/bin/bash
#ищем файлы с расширением .mkv, .m4v
Downloads_file=$(find /volume1/Geroev_Avenue_18/Downloads/ -type f \( -iname "*.mkv" -or -iname "*.m4v" -or -iname "*.mp4" -or -iname "*.ts" -or -iname "*.avi" \) -and -mmin +15 -exec basename "{}" ';' | shuf -n 1 | sed -n '1p' ); 
echo $Downloads_file
if [ -n "$Downloads_file" ]; then 
#ищем местоположение в загрузках
Downloads_folder=$(find /volume1/Geroev_Avenue_18/Downloads/ -type f \( -iname "*.mkv" -or -iname "*.m4v" -or -iname "*.ts" -or -iname "*.avi" \) -and -mmin +15 -exec dirname "{}" ';' | sed -n '1p' ); 
fi
echo $Downloads_folder
#проверяем в сериалах файлы с расширением .mkv, .m4v,соответствующего названия
if [ -n "$Downloads_file" ]; then 
Serials_file=$(find /volume1/Geroev_Avenue_18/Shared_Videos/Serials/ -type f -iname "$Downloads_file" -exec basename "{}" ';' | sed -n '1p' ); 
fi
echo $Serials_file
#Media Renaimer 
#Folder
if [ -n "$Downloads_folder" ]; then
	# sed-ом заменяем символы кирилицы на символы латиницы
	 TRS=` echo $Downloads_folder | tr [:blank:] "_"`
	
	mv -v "$Downloads_folder" "$TRS"
fi
#File
if [ -n "$Downloads_folder" ]; then
	# sed-ом заменяем символы кирилицы на символы латиницы
	 TRS=` echo $Downloads_file | tr [:blank:] "_"`
	
	mv -v "$Downloads_folder""/""$Downloads_file" "$Downloads_folder""/""$TRS"
fi
#ищем местоположение в сериалах
if [ -n "$Serials_file" ]; then
Serials_folder=$(find /volume1/Geroev_Avenue_18/Shared_Videos/Serials/ -type f -iname "$Downloads_file" -and -mmin +15 -exec dirname "{}" ';')
fi
echo $Serials_folder
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега Linux
можно заменить часть кода на вот такой
find /volume1/Geroev_Avenue_18/Downloads/ -type f -regex ".*\.\(mkv\|m4v\|ts\|avi\)"

лаконичней и проще читается
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы