发新话题
打印

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

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

  #!/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);
  }
}
复制内容到剪贴板
代码:
#!/bin/bash
# written by tears
# [email]tears@mail.qgzxol.com[/email]
# 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
太复杂。

用find+xargs+rename这几个shell命令组合就可以轻松完成
具体怎么弄
介绍下
看具体需求吧.

简单一点就是
rename 's/(HTML|Html)$/html/' *
这样就把当前文件下的HTML Html为扩展名的改为了html

而find+xargs的功能就是替换上面的*.
用find . -iregex "xxx" | xargs rename xxx

rename是采用perl的正则表达式的.

当然, 我这个是按照需求来定制的
高手
我都看不懂:)
我也觉得用shell的脚本来实现简单点。
好好学习,天天向上~~! msn:hlf5507@163.com
发新话题