yang2pipi 发表于 2004-7-20 21:17:48

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

如何把一个文件夹下的文件扩展名HTML全部改成html?谢谢!

lanche 发表于 2004-7-20 23:31:51

用正则表达式一个命令就可以解决了,可惜我水平差,不会... :oops:

那就暂时先写个脚本来代替罢,反正也能用:

#!/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);
}
}


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

xiaocong213 发表于 2004-7-21 03:16:18

楼主的情况rename最简单
man rename 有:
rename .htm .html *.htm
所以
rename.HTML .html *.HTML就可以了

yang2pipi 发表于 2004-7-21 20:24:24

谢谢xiaocong213
用rename终于搞定了.

lanche 发表于 2004-7-21 21:50:20

呵呵,原来有这功能,咱还未用过...:oops:

bzimage 发表于 2004-7-23 19:59:06

楼主的情况rename最简单
man rename 有:
rename .htm .html *.htm
所以
rename.HTML .html *.HTML就可以了

好,我还准备显吧显吧呢

colorlinux 发表于 2004-7-24 09:32:49

正则表达式该是 s///g
就是不知道怎么用

bzimage 发表于 2004-7-24 11:43:46

找本书看,有很多的,耐心读读

qtal110 发表于 2004-7-24 14:26:29

呵呵

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

1234ggg 发表于 2004-8-14 10:57:14

谢谢,我会尝试以下,呵呵

JohnnyHo 发表于 2004-8-16 12:25:58

rename 似乎就是个perl脚本吧

黑色阳光 发表于 2004-8-19 23:42:25

自家的rename


#!/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   


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

betatoy 发表于 2004-8-21 20:24:04

實用

BOoRFGOnZ 发表于 2004-8-22 07:16:30

顶...

wkp10251025 发表于 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.doc2.doc3.txt
这与我要求的.c的后缀相差甚远!

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