sh/bash/dash/ksh/zsh等Shell脚本
-
xunknown
- 帖子: 22
- 注册时间: 2010-01-03 20:04
#16
帖子
由 xunknown » 2010-01-08 22:04
现丑了,我是现学现卖的,呵呵:)
我的代码做了简单的异常处理,改名后如果与现有文件重名,这些文件不就改名。
DerekTan 写了:谢谢xunknown的帮助
试了一下你的脚本,好像子目录的名字没有全部改过来,你看看是不是哪里漏了?仍然很感谢你,你的脚本也给我带来了启发
自己写了一个,
代码: 全选
#!/bin/bash
modifyname()
{
if [ -d "$1" ] #directory
then
for files in "$1"/*
do
modifyname "$files"
done
fi
bname=`basename "$1"`
echo $bname | grep -q " " #chech if contains blank
if [ $? -eq 0 ]
then
dname=`dirname "$1"`
newname=$dname/${bname// /_}
mv -v "$1" "$newname"
fi
}
[ -e "$1" ] || { echo "$1 does not exist"; exit 1; }
modifyname "$1"
exit 0
-
openware
- 帖子: 173
- 注册时间: 2009-02-22 14:15
-
联系:
#17
帖子
由 openware » 2010-01-09 22:44
代码: 全选
find .
.
./d m.bak
./e r.bak
./a k.bak
find -exec rename 's/\ //g' {} \;
ls .
ak.bak dm.bak er.bak
不是改过来了么?去看看正则表达式和sed吧。。。
Desire Freedom, Love Beauty, Keep Hacking。
-
DerekTan
- 帖子: 33
- 注册时间: 2007-05-22 10:48
-
联系:
#18
帖子
由 DerekTan » 2010-01-10 21:40
openware 写了:代码: 全选
find .
.
./d m.bak
./e r.bak
./a k.bak
find -exec rename 's/\ //g' {} \;
ls .
ak.bak dm.bak er.bak
不是改过来了么?去看看正则表达式和sed吧。。。
这么简单的例子我也会,并不能解决我的问题
