免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1438 | 回复: 2
打印 上一主题 下一主题

批量修改文件名,hmkart进来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-01-21 11:57 |只看该作者 |倒序浏览
hmkart,大侠,您刚才给的script我试过了,有些问题啊。
我想要一次修改几千个文件名,您的script只能一次一个啊。

#!/bin/sh

# This Shell Script can change low-case filename to UPPER-CASE filename.

# init the vars!

error=0;count=0
number=$(echo $* | /usr/bin/wc -w)

# end of the "init the vars"!


# process the parameter(s)!

if [ "$1" = "-h" -o "$1" = "--help" ]; then
echo "Usage: $0 [path] [filename]..."
echo "Description: Change \"filename\" to \"FILENAME\"!"
echo ""
echo " -h, --help display this info and exit"
echo " -v, --version display version info and exit"
echo ""
echo "Report bugs to <sea___sky@sina.com>."
echo "S: I think U can modify it by nothing! It's just a shell script! "
exit 0
fi

if [ "$1" = "-v" -o "$1" = "--version" ];then
echo "lowks2upks (a tool form my file-utils) ver0.1a"
echo "Written by Juner.L"
echo ""
echo "Copyright (C) Juner"
echo "This is free software; see the source for copying conditions. There is NO"
echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit 0
fi

# end of the "process the parameter(s)"!


# working part!

if [ -z "$1" ]; then
/usr/bin/printf "\a"
echo "Just put the \"filename\" follow the command!"
else
for i in $*
do
declare -x filez=$(echo $i | /bin/awk BEGIN'{FS="/"} {print $NF}')
pathz=$(echo $i | /bin/awk BEGIN'{FS=ENVIRON["filez"]} {print $1}')
if [ -e "$i" -a -w "$i" ]; then
file=$(echo $filez | /usr/bin/tr "[A-Z]" "[a-z]"
if [ "$filez" = "$file" ]; then
echo "THE FILE \"$i\" IS ALREADY UPPERCASED!"
count=$(/usr/bin/expr 1 + $count)
else
echo "$pathz$filez => $pathz$file"
/bin/mv -f $pathz$filez $pathz$file 2> /dev/null
fi
else
echo "WARING: FILE \"$i\" NOT EXIST or YOU HAVE NO \"w\" RIGHT TO FILE!"
fi
done
if [ "$number" -eq "$count" ]; then
echo " ALL FILE(S) IS UPPERCASED!"
else
echo " $count FILE(S) ALREADY UPPERCASED!"
fi
fi

# end of the "working part"!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-01-22 02:00 |只看该作者

批量修改文件名,hmkart进来

ls 把文件名输出到一个文件里,再搞一个“while read”循环,就行了吧

论坛徽章:
0
3 [报告]
发表于 2003-09-16 18:11 |只看该作者

批量修改文件名,hmkart进来

I don't know awk well. so use this :
Code:

     for i in *; do mv "$i" `echo $i | tr '[a-z]' '[A-Z]'` 2>/dev/null; done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP