много файлов, которые я загружаю, имеют дерьмо/спам в именах файлов, например.
[ www.crap.com ] file.name.ext
www.crap.com - file.name.ext
У меня есть два способа справиться с ними, но они оба кажутся довольно неуклюжими:
с расширением параметра:
if [[ ${base_name} != ${base_name//\[+([^\]])\]} ]]
then
mv -v "${dir_name}/${base_name}" "${dir_name}/${base_name//\[+([^\]])\]}" &&
base_name="${base_name//\[+([^\]])\]}"
fi
if [[ ${base_name} != ${base_name//www.*.com - /} ]]
then
mv -v "${dir_name}/${base_name}" "${dir_name}/${base_name//www.*.com - /}" &&
base_name="${base_name//www.*.com - /}"
fi
# more of these type of statements; one for each type of frequently-encountered pattern
а затем с помощью echo/sed:
tmp=`echo "${base_name}" | sed -e 's/\[[^][]*\]//g' | sed -e 's/\s-\s//g'`
mv "${base_name}" "{tmp}"
Мне кажется, что расширение параметра хуже из двух, но мне оно нравится, потому что я могу сохранить одну и ту же переменную, назначенную файлу для дальнейшей обработки после переименования (приведенный выше код используется в script который вызывается для каждого файла после завершения загрузки файла).
Так или иначе, я надеялся, что там будет лучший/более чистый способ сделать выше, чем кто-то более осведомленный, чем я, может показать мне, предпочтительно таким образом, чтобы я мог легко переназначить старую/оригинальную переменную в новый/переименованный файл,
Спасибо