怎么把文件名中的空格全去掉

sh/bash/dash/ksh/zsh等Shell脚本
头像
xunknown
帖子: 22
注册时间: 2010-01-03 20:04

Re: 怎么把文件名中的空格全去掉

#16

帖子 xunknown » 2010-01-08 22:04

现丑了,我是现学现卖的,呵呵:)
我的代码做了简单的异常处理,改名后如果与现有文件重名,这些文件不就改名。
DerekTan 写了:谢谢xunknown的帮助

试了一下你的脚本,好像子目录的名字没有全部改过来,你看看是不是哪里漏了?仍然很感谢你,你的脚本也给我带来了启发 :em01

自己写了一个,

代码: 全选

#!/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
联系:

Re: 怎么把文件名中的空格全去掉

#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
联系:

Re: 怎么把文件名中的空格全去掉

#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吧。。。
这么简单的例子我也会,并不能解决我的问题 :em05
回复