today0 2010-12-13
实现某类文本文件的重命名,作为练习。Ubuntu 8.04.4上测试通过。
#!/bin/bash # Rename_OnlyOneDirectory.sh # 问题描述: # 某目录中出现一些以“;1”结尾的文本文件名,编写shell脚本, # 以去除仅当前这个目录中该类文件名中结尾部分的“;1”。 # COUNT用于计数,错误输入的情况下,默认为允许3次尝试。 COUNT=0 while [ $COUNT -lt 3 ] do echo "请输入要重命名的文件所在目录的路径:" read PATH if [ -d $PATH ] then cd $PATH # NUM代表符合条件的、可重命名的文件数。 NUM=`/bin/ls -l | /bin/grep ^-.*\;1$ | /usr/bin/wc -l` echo "当前目录中需要重命名的文件有:$NUM 个" # 如果NUM为0,说明无需重命名操作,退出。 if [ $NUM -eq 0 ] then echo "无需重命名,退出。" exit fi # 列出符合条件的、要重命名的文件,然后进行重命名操作。 for loop in `/bin/ls -l | /bin/grep ^-.*\;1$|/usr/bin/awk '{print $8}'` do echo "$loop" # 进行重命名操作。如果出错,则输出错误信息到相应文件。 /bin/mv $loop `echo -n $loop | /bin/sed 's/\;1//'` 2>/tmp/`/usr/bin/basename $0`_error.log done echo "重命名完成!" TOTAL=`/bin/ls -l|/bin/grep ^-|/usr/bin/wc -l` echo "当前目录中的普通文件有:$TOTAL 个" /bin/ls `/bin/ls -l|/bin/grep ^-|/usr/bin/awk '{print $8}'` exit else # 输入的路径并非代表目录。 if (($COUNT<2)) then echo "输入的路径错误,请确认后输入。" else echo "尝试次数过多,退出。" fi fi # 计数器COUNT加1。 COUNT=$[$COUNT+1] done
实验环境:Ubuntu 8.04.4 Bash
联系方式:qq_81064483, [email protected]
本文遵循GNU协议,不足之处,敬请指出,谢谢