Я написал сценарий оболочки, который в основном ищет файлы rar и развязывает их.Проверьте, существует ли файл в заданном каталоге, НЕ подкаталоги
Чтобы избежать разрыва одного и того же файла несколько раз, я добавил чек для типа файлов, которые я буду отрывать, а именно: * .avi, * .mkv и * .mp4.
find "/mnt/media1/TV Shows/" -type f -name "*.rar" -print0 | while IFS= read -r -d '' file; do
DIR=$(dirname "${file}")
MKV=$(find "${DIR}" -name "*.mkv" -print0)
AVI=$(find "${DIR}" -name "*.avi" -print0)
MP4=$(find "${DIR}" -name "*.mp4" -print0)
if [ ! -f "$MKV" ] && [ ! -f "$AVI" ] && [ ! -f "$MP4" ]; then
printf "UNRARING ${DIR}\n" >> /home/johan/unrarer.log
sudo unrar e "${file}"
MKV=$(find "${DIR}" -name "*.mkv" -print0)
AVI=$(find "${DIR}" -name "*.avi" -print0)
MP4=$(find "${DIR}" -name "*.mp4" -print0)
if [ ! -f "$MKV" ] && [ ! -f "$AVI" ] && [ ! -f "$MP4" ]; then
printf "UNRAR FAILED\n" >> /home/johan/unrarer.log
else
printf "UNRAR SUCCESSFUL\n" >> /home/johan/unrarer.log
fi
else
printf "${DIR}: Found an mkv, avi or mp4 file, skipping\n" >> /home/johan/unrarer.log
fi
done
Теперь проблема в том, что большинство, если не все, каталоги имеют «Sample» подкаталог с видеофайла в нем. Этот файл будет помечен моей текущей реализацией, чего я не хочу.
Я хочу, чтобы он смотрел точный каталог, $DIR
, а не его подкаталоги.
В настоящее время я сделал обходной путь, где я просто удаляю каталог образца, если он существует, но это прерывает потоки.
Я попытался немного поэкспериментировать с -wholename, но я не нашел ничего, что сработает.
Любая помощь приветствуется.
С уважением, Йохан
Проверьте страницу руководства для «найти» в вашей системе - говорит мой : -maxdepth levels. Спускаются на большинстве уровней (неотрицательных целых) уровней каталогов ниже аргументов командной строки. -maxdepth 0 означает только применить тесты и действия к аргументам командной строки. " –