首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

批量重命名的一个shell脚本,仅限当前目录-写得有点繁琐

2012-07-02 
批量重命名的一个shell脚本,仅限当前目录------写得有些繁琐实现某类文本文件的重命名,作为练习。Ubuntu 8.

批量重命名的一个shell脚本,仅限当前目录------写得有些繁琐

实现某类文本文件的重命名,作为练习。Ubuntu 8.04.4上测试通过。

#!/bin/bash# Rename_OnlyOneDirectory.sh# 问题描述:# 某目录中出现一些以“;1”结尾的文本文件名,编写shell脚本,# 以去除仅当前这个目录中该类文件名中结尾部分的“;1”。# COUNT用于计数,错误输入的情况下,默认为允许3次尝试。COUNT=0while [ $COUNT -lt 3 ]doecho  "请输入要重命名的文件所在目录的路径:"read PATHif [ -d $PATH ]thencd $PATH# NUM代表符合条件的、可重命名的文件数。NUM=`/bin/ls -l | /bin/grep ^-.*\;1$ | /usr/bin/wc -l`echo "当前目录中需要重命名的文件有:$NUM 个"# 如果NUM为0,说明无需重命名操作,退出。if [ $NUM -eq 0 ]thenecho "无需重命名,退出。"exitfi# 列出符合条件的、要重命名的文件,然后进行重命名操作。for loop in `/bin/ls -l | /bin/grep ^-.*\;1$|/usr/bin/awk '{print $8}'`doecho "$loop"# 进行重命名操作。如果出错,则输出错误信息到相应文件。/bin/mv $loop `echo -n $loop | /bin/sed 's/\;1//'` 2>/tmp/`/usr/bin/basename $0`_error.logdoneecho "重命名完成!"TOTAL=`/bin/ls -l|/bin/grep ^-|/usr/bin/wc -l`echo "当前目录中的普通文件有:$TOTAL 个"/bin/ls `/bin/ls -l|/bin/grep ^-|/usr/bin/awk '{print $8}'`exitelse # 输入的路径并非代表目录。if (($COUNT<2))thenecho "输入的路径错误,请确认后输入。"elseecho "尝试次数过多,退出。"fifi# 计数器COUNT加1。COUNT=$[$COUNT+1]done

?

实验环境:Ubuntu 8.04.4 ? ?Bash

联系方式:qq_81064483, emial_AllenNewOK@126.com

本文遵循GNU协议,不足之处,敬请指出,谢谢

1 楼 wiesin 2010-12-14   不错,正想找些bash代码研究研究呢,毕竟要学以致用嘛 2 楼 AllenNewOk 2010-12-15   wiesin 写道不错,正想找些bash代码研究研究呢,毕竟要学以致用嘛
谢谢!

热点排行