Wandering's Blog » 日志 » Shell: 写了一个把文件名中的空格等不需要的字符替换掉的脚本
Shell: 写了一个把文件名中的空格等不需要的字符替换掉的脚本
Wandering 发表于 2008-04-10 18:39:53
.
我有不少电子书的文件名中包含了空格,转到openSUSE后有些软件打开这些文件时不识别其中的一些字符。
于是有了将文件名批量修整的想法,脚本如下:
#/bin/sh
find . -maxdepth 1 -name "*" -print |
while read name; do
newname=$(echo $name | sed 's/\s\+/./g' | sed 's/\.\{2,\}/\./g' | sed 's/[(,)]\+/_/g' | sed 's/\]\+/_/g' | sed 's/\[\+/_/g' | sed 's/_\+/_/g' | sed "s/'\+/\-/g")
if [[ $name != $na ]]; then
echo "mv $name $newname"
mv "$name" $newname
echo
echo
fi
done
这个脚本的意图是将本层目录中的文件名、目录名中,将空格替换为".",将半角圆括号、半角方括号、半角逗号替换为"_",最后将重复多次的"."或"_"替换为单个的。这个脚本不是最优的,但时间仓促,为了解决问题,我没有花更多时间学习更好的方法和更多优化。
......
我有不少电子书的文件名中包含了空格,转到openSUSE后有些软件打开这些文件时不识别其中的一些字符。
于是有了将文件名批量修整的想法,脚本如下:
#/bin/sh
find . -maxdepth 1 -name "*" -print |
while read name; do
newname=$(echo $name | sed 's/\s\+/./g' | sed 's/\.\{2,\}/\./g' | sed 's/[(,)]\+/_/g' | sed 's/\]\+/_/g' | sed 's/\[\+/_/g' | sed 's/_\+/_/g' | sed "s/'\+/\-/g")
if [[ $name != $na ]]; then
echo "mv $name $newname"
mv "$name" $newname
echo
echo
fi
done
这个脚本的意图是将本层目录中的文件名、目录名中,将空格替换为".",将半角圆括号、半角方括号、半角逗号替换为"_",最后将重复多次的"."或"_"替换为单个的。这个脚本不是最优的,但时间仓促,为了解决问题,我没有花更多时间学习更好的方法和更多优化。
......
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
