QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7200|回复: 29

如何批量修改文件的扩展名?

[复制链接]
发表于 2004-7-20 21:17:48 | 显示全部楼层 |阅读模式
如何把一个文件夹下的文件扩展名HTML全部改成html?谢谢!
发表于 2004-7-20 23:31:51 | 显示全部楼层
用正则表达式一个命令就可以解决了,可惜我水平差,不会...

那就暂时先写个脚本来代替罢,反正也能用:
[code:1]
#!/usr/bin/perl
#Rename the HTML file to html

@files=`ls -1 $ARGV[0]`;
foreach $file(@files){
  $leng=length($file)-1;
  $file=substr($file,0,$leng);
  $file_type=substr($file,$leng-4,$leng);
  $file2=substr($file,0,$leng-4);
  $file2=sprintf("%shtml",$file2);
  if($file_type eq "HTML"){
    printf("mv $file $file2\n");
    rename($file,$file2);
  }
}
[/code:1]

例如将些文件保存名为2html.pl,赋予运行权限:chmod u+x 2html.pl,然后运行./2html.pl 文件夹名,如果省略参数则对当前文件夹操作。
回复

使用道具 举报

发表于 2004-7-21 03:16:18 | 显示全部楼层
楼主的情况rename最简单
man rename 有:
rename .htm .html *.htm
所以
rename  .HTML .html *.HTML就可以了
回复

使用道具 举报

 楼主| 发表于 2004-7-21 20:24:24 | 显示全部楼层
谢谢  xiaocong213
用rename终于搞定了.
回复

使用道具 举报

发表于 2004-7-21 21:50:20 | 显示全部楼层
呵呵,原来有这功能,咱还未用过...  
回复

使用道具 举报

发表于 2004-7-23 19:59:06 | 显示全部楼层
[quote:ae3482e73f="xiaocong213"]楼主的情况rename最简单
man rename 有:
rename .htm .html *.htm
所以
rename  .HTML .html *.HTML就可以了[/quote]

好,我还准备显吧显吧呢
回复

使用道具 举报

发表于 2004-7-24 09:32:49 | 显示全部楼层
正则表达式该是 s/[A-Z]/[a-z]/g
就是不知道怎么用
回复

使用道具 举报

发表于 2004-7-24 11:43:46 | 显示全部楼层
找本书看,有很多的,耐心读读
回复

使用道具 举报

发表于 2004-7-24 14:26:29 | 显示全部楼层

呵呵

原来还有这功能,LINUX命令功能真是强大,不过不要我的LINUX中没有这个命令呀 :-(
回复

使用道具 举报

发表于 2004-8-14 10:57:14 | 显示全部楼层
谢谢,我会尝试以下,呵呵
回复

使用道具 举报

发表于 2004-8-16 12:25:58 | 显示全部楼层
rename 似乎就是个perl脚本吧
回复

使用道具 举报

发表于 2004-8-19 23:42:25 | 显示全部楼层

自家的rename

[code:1]
#!/bin/bash
# written by tears
# [email protected]
# 2004-08-17

if [ $# -lt 2 ]; then
    echo "Usage: `basename $0` str1 str2 str3 ... strlast"  >&2
    exit 1
fi

for last in $@
do
    :
done

for i in $@
do
    if [ "$i" = "$last" ]; then
        continue
    fi

    for n in *
    do
        if [ -d $n ]; then
            continue
        fi
       
        file_basename=${n%%.$i}
        if [ "$file_basename" != "$n" ]; then
            echo "$n -> ${file_basename}.$last"
            mv "$n" "${file_basename}.$last"
        fi
    done
done   
[/code:1]

rename Html HTML html
可以把目录下所有扩展名为Html HTML的文件更改为html
回复

使用道具 举报

发表于 2004-8-21 20:24:04 | 显示全部楼层
實用
回复

使用道具 举报

发表于 2004-8-22 07:16:30 | 显示全部楼层
顶...
回复

使用道具 举报

发表于 2004-8-26 12:15:42 | 显示全部楼层
我怎么发觉在用rename时还是存在很大局限性:
   
1.我的系统(RH ES3.0)在使用rename .htm .html *.htm  时得到的不是htm,而是html。
2.现有三个文件:1.c、2.doc、3.txt,我用rename .c .doc .txt *.c 得到的却是:
1.doc  2.doc  3.txt
这与我要求的.c的后缀相差甚远!

反复实验,我发现在我的系统中,用rename好像并不能实现“批量修改文件的扩展名”的功能。
1.不能批量修改,如上所示。
2.在修改时甚至与文件的排列次序有关:如果文件为:
1.html   2.htm  3.htm
在用rename .htm .html *.htm时它会报告
rename: renaming *.htm to *.html failed: 没有那个文件或目录
如果文件为:
1.htm   2.html  3.html
则得到的是:
1.html   2.html  3.html
.........................
反正结果千奇白怪!!!
请问这是怎么回事???   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-6-6 19:52 , Processed in 0.085124 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表