我下载的许多文件的文件名中都有垃圾邮件/垃圾邮件,例如
[ 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}"
我觉得参数扩展是两者中最差的一个,但我喜欢它,因为我能够保留分配给文件的相同变量,以便在重命名后进行进一步处理(上面的代码用于为每个文件调用的脚本中)文件下载完成后)。
因此,无论如何,我希望有一种更好/更清洁的方法来执行上述操作,以使比我自己更有学识的人可以向我展示,最好以一种使我能够轻松地将旧/原始变量重新分配给新/重命名文件的方式。
谢谢
明月笑刀无情