几个SHELL脚本

2010-04-20  陈倩 

把当前目录下的所有文件名由大写(或小写)字母改为小写
#! /bin/sh
# Usage: ./low.sh <-l | -u> <target_directory>

#./low.sh -l directory 为全部转化为小写
#./low.sh -u directory 为全部转化为大写
#
# 第二形参必须是目录,第一形参指定-l或-u
#
if [ $# -ne 2 ] ; then
echo "Usage: ${0} <-l | -u> <target_directory>"
exit 1
fi

if [ ! -d ${2} -o "${1}" != "-l" -a "${1}" != "-u" ] ; then
echo "Usage: ${0} <-l | -u> <target_directory>"
exit 1
fi

dir=`dirname "${2}"`
cd ${dir} > /dev/null 2>&1
if [ $? -ne 0 ] ; then
echo "Error: checking your ${dir}"
exit 1
fi

exec 1>/dev/null 2>&1

if [ "${1}" = "-l" ] ; then
base=`basename "${2}" | tr "[A-Z]" "[a-z]"`
else
base=`basename "${2}" | tr "[a-z]" "[A-Z]"`
fi

mv -f "`basename ${2}`" "${base}" > /dev/null 2>&1

for entry in `find ${base}`
do
before="."
for after in `echo "${entry}" | sed -e 's,/, ,g'`
do
tmp_entry="${before}/${after}"
if [ "${1}" = "-l" ] ; then
before=`echo "${tmp_entry}" | tr "[A-Z]" "[a-z]"`
else
before=`echo "${tmp_entry}" | tr "[a-z]" "[A-Z]"`
fi
mv -f "${tmp_entry}" "${before}"
done
done
用shell脚本完成在某个目录下保留指定日期的文件
#!/bin/sh
cd /home/pic
ls -l |while read line
do
month=`echo $line|awk '{print }'`
day=`echo $line|awk '{print }'`
#time=echo $line|awk '{print }'`
file=`echo $line|awk '{print }'`
if [ "$month" = "Nov" -a "$day" = "1" ]
then
continue
else
rm -rf $file
echo "rm $file OK!"
fi
done
字符串替换

sed 's/oldwc/newwc/g' filename

例:
cat file
~~~~~~~~~~LG!@!@#@# asdf!!!!!!!!!!!!
cat file|sed 's/LG/lg/g'
~~~~~~~~~~lg!@!@#@# asdf!!!!!!!!!!!!

 
297°/2929 人阅读/5 条评论 发表评论

刘俊  2010-04-21

学习了,感觉自己的shell好烂,想写个自动更新svn的脚本还到网上搜了半天,照葫芦画瓢的


彭方  2010-04-21

刘俊: 学习了,感觉自己的shell好烂,想写个自动更新svn的脚本还到网上搜了半天,照葫芦画瓢的
写了吗?分享一下呗


刘俊  2010-04-21

彭方: 写了吗?分享一下呗
这个也有用?我给公司同事让他们每天早晨定时自动更新,他们说:我手点一下就ok了,搞那么复杂干什么,我觉得没什么用处了


彭方  2010-04-22

呵呵,也是!


熊志男  2010-04-27

学习 学习


登录 后发表评论