批量修改linux下文件名

秋天的菠菜 发布于 2014/02/13 10:07
阅读 386
收藏 0
各位,把
192.168.1.101_uservisit.log_2014-01-12
192.168.1.102_uservisit.log_2014-01-13
192.168.1.103_uservisit.log_2014-01-14
这个格式文件修改为
192.168.1.101_uservisit_2014-01-12.dat
192.168.1.102_uservisit_2014-01-13.dat
192.168.1.103_uservisit_2014-01-14.dat
该怎么操作
加载中
0
seaquester
seaquester

一般可以使用rename, 但是,有的Linux发行版所带的rename不支持正则表达式,就没法达成你的要求。

所以,还是写个脚本,我写了一个简单的bash脚本:

#!/bin/bash

for i in * ;do
    OUT=$(echo $i | sed 's/.log_/_/g')

    #skip files without ".log_" in the filename
    if [ "$i" == "$OUT" ] ;then
        continue
    fi

    mv "$i" "$OUT.dat"
done

脚本很简单,没有考虑太多情况,针对你给出的这几个文件测试还是可以工作的。

0
DF_XYZ
DF_XYZ
我会写个Python脚本来做
秋天的菠菜
秋天的菠菜
能不能帮忙写一个?目前急用
0
独钓渔
独钓渔
楼上这个好。
0
l
luxingmin
<?php
$path = "./test";
$dir = opendir($path);
if(!$dir){
    exit;
}
while($file = readdir($dir)){
    if($file != '.' && $file != '..'){
        $filename = explode(".log",$file);
        $newfilename = $filename[0].$filename[1].".dat";
        rename($path."/".$file,$path."/".$newfilename);
    }


}
?>
0
DF_XYZ
DF_XYZ
import os
l = os.listdir()
for i in l:
    os.rename(i, i[:23] + i[27:] + '.dat')




Solowave
Solowave
还是python牛逼啊
0
goodluck
goodluck

http://www.oschina.net/code/snippet_52025_2235

myrename 's/\(.*\)\.log\(.*\)/\1\2.dat/'

返回顶部
顶部