Wayne


Calendar
February | ||||||
---|---|---|---|---|---|---|
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 1 |

Categories

Search

Random Posts

Counter
401903

Hot Posts

New Comments

New Messages

Links

RSS

一个简单的改名备份脚本
Wayne
posted @ Wed, 23 Feb 2011 20:27:12 +0000
in Experience
, 2815 readers
虽然说打算在服务器上用版本控制来管理部署的程序了,但一时终归还没用起来。而按照惯例,上传新版时旧版是不删的,仅仅改个名字存放起来而已。改名字时也没啥严格规定,一直以来有点乱。当然也许别人重命名还是比较规矩的,但反正我是很随心所欲的,搞得经常自己也记不清楚,只能靠修改时间来辨认。上次写了个脚本,把给名字自动加上时间后缀作为备份命令,倒也还管用。这次想再改进一下,上点参数,能整成 "*.latest", "*.current", "*.last" 之类的效果。
#!/bin/bash case "$1" in "") echo "Usage: bak [option] filename" echo "bak: rename a file as a backup" echo "Try \"bak -h\" for help" exit ;; *) rename=0 option=0 while getopts "hrlc" flag do option=1 case "$flag" in "h") helplist=1;; "r") let "rename += 1";; "l") last=1;; "c") current=1;; esac done if [ "$option" -ne 1 ] then filename=$1 newfilename=$filename.`date +%Y%m%d%H%M` mv -f $filename $newfilename echo $newfilename exit fi ;; esac if [ "$helplist" = 1 ]; then echo "bak: rename a file as a backup" echo "Usage: bak [option] filename" echo "default(no option): rename filename to filename.`date +%Y%m%d%H%M`" echo "Options:" echo " -l: rename filename to filename.last" echo " -c: rename filename to filename.current" echo " -r: cut the end of filename from the last dot, example:" echo " filename.last --> filename" echo "multiple r will try to cut multiple part split by dot from the end, as:" echo " -rrr filename.section1.secion2.section3 --> filename" exit fi case "$2" in "") echo "Usage: bak [option] filename" echo "bak: rename a file as a backup" echo "Try \"bak -h\" for help" ;; *) filename=$2 newfilename=$filename if [ "$rename" -ne 0 ]; then for i in `seq 1 $rename` do newfilename=${newfilename%.*} done fi if [ "$last" = 1 ]; then newfilename=$newfilename.last elif [ "$current" = 1 ];then newfilename=$newfilename.current else newfilename=$newfilename.`date +%Y%m%d%H%M` fi mv $filename $newfilename echo $newfilename ;; esac