当前位置:  技术问答>linux和unix

50分求一个批量改名的小脚本

    来源: 互联网  发布时间:2015-09-02

    本文导语:  需要一个小的perl或者shell程序能将某一个目录下的文件名作批量修改 例如:一个根目录有很多子目录,层数未知,每个目录下有aaa,bbb,ccc等文件,我现在要将目录下所有的aaa改称111,bbb改称222,ccc改称333,改名后...

需要一个小的perl或者shell程序能将某一个目录下的文件名作批量修改
例如:一个根目录有很多子目录,层数未知,每个目录下有aaa,bbb,ccc等文件,我现在要将目录下所有的aaa改称111,bbb改称222,ccc改称333,改名后文件的路径不变,不符合的文件不作改动

环境是freebsd,上面有csh,bash和perl,我刚接触,什么都不懂,应该很简单吧

很急,来不及找资料了,请各位帮帮忙

另,我想学shell和perl的话需要看什么书和资料,请各位推荐,另外给分

|
BASH 脚本一个
修改 BASEDIR ,      搜索路径根目录
     SRCFILE ,      原文件 
     DESFILE ,      替换的目标文件  

执行前需要手动修改。

####################################################################
#!/bin/bash

#find and replace shell

BASEDIR=/tmp/testdir
SRCFILE=AAA
DESFILE=111

if [ -d $BASEDIR ]
then
    cd $BASEDIR
    FILELOCLIST=`find ./ -name $SRCFILE  -type f  -exec dirname {} ;` # gen filelocation
 
    for DIRNAME in $FILELOCLIST
    do
        if [ -e $DIRNAME/$DESFILE ]
        then
            echo "ERR: [$DIRNAME/$SRCFILE] Convert Target  $DIRNAME/$DESFILE already exists , skipped."
        else
            echo "Moving $DIRNAME/$SRCFILE  ---> $DIRNAME/$DESFILE"
            mv $DIRNAME/$SRCFILE $DIRNAME/$DESFILE
        fi
    done
else
    echo -e  "$BASEDIR does not exist!n"
fi

####################################################################





for recommendation:
BASH  :   O'Reilly : Learning Bash
Perl  :   SAMS:  Learing Perl in 24 Hours
                  O'Reilly:  Learning Perl
                             Perl Programming Language

|
可以试试下面的脚本

#!/bin/bash

if [ $# -ne 3 ];then
    echo "The parameter number is wrong, it is four!"
    exit 1
else
    find $1 -name $2 > tempfile1
    sed 's/^/mv /g' tempfile1 > tempfile2
    sed "s/$2/$3/g" tempfile1 > tempfile3
    paste tempfile2 tempfile3 > renamefile
    rm -f tempfile1 tempfile2 tempfile3
    chmod +x renamefile
    ./renamefile
    rm -f renamefile
fi


在命令行上面输入命令的格式:
./脚本名称  包含你要改名的文件的目录   需要改名的文件名称   改名后的文件名称

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用FTP命令实现文件拷贝并改名
  • 息壤企业门户系统(已改名为蝉知,废弃) xirangEPS
  • 一个关于文件夹批量改名的问题。
  • 我把administrator改名后重新登陆win2000, 结果jb6启动时告我license格式不对?
  • java中怎么对目录改名字?
  • 有关dos种文件改名的问题!!!
  • 安装了一台Linux服务器,这么改名?
  • 怎么在UNIX下给文件改名字
  • ProFTPD如何让某个用户只能上传,不能改名或删除?
  • 请教 unix 批量 改名
  • 文件改名问题
  • 如何在C中给文件改名?
  • 请问linux下如何把带时间戳的文件名改名?
  • 用awk的一个批量改名问题
  • 我要把一个目录下所有.cvs的文件改名为.bak要用什么命令啊?
  • 文件批量改名,HELP!
  • 求助有关文件批量改名的控制命令。 。。。。
  • mssql SA帐号的改名和删除
  • SQL2000中改名和删除默认sa帐号的最安全方法
  • 一个在Linux下递归改名的问题!请大家指教!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3