精华内容
下载资源
问答
  • 此脚本是mv命令的增强版,mv 不支持mv *.txt *.text之类的改名,本脚本主要构造了一个...比如,有个文件为ammbnnc.txt, 使用ren a%b%c.% x%y%z.%命令后, 该文件改名为xmmynnz.txt 。源文件如下:=================...

    此脚本是mv命令的增强版,mv 不支持mv *.txt *.text之类的改名,本脚本主要构造了一个ren函数不但支持 ren %.txt %.text这样的改名,还支持 ren a%b%c.% x%y%z.%这样的命令。

    比如,有个文件为ammbnnc.txt, 使用ren a%b%c.% x%y%z.%命令后, 该文件改名为xmmynnz.txt 。

    源文件如下:

    ================================================

    #!/bin/bash

    g_splash='\';

    g_wildcard='%';

    g_spwc="${g_splash}${g_wildcard}";

    #把源文件名转换为正则表达式,供ren函数替换文件名用

    function cvtSrcNameToPattern

    {

    local vfile=$1

    local vsplash2d='\\.';

    local vsplash3LB='\\\(';

    local vsplash3RB='\\\)';

    local finalpattern="";

    finalpattern=`echo "${vfile}" | sed -ne "s/\./${vsplash2d}/g" -ne "s/${g_spwc}/${vsplash3LB}.*${vsplash3RB}/gp"`;

    echo ${finalpattern}

    }

    #把目标文件名转换为正则表达式,供ren函数替换文件名用

    function cvtDestNameToPattern

    {

    local vfile=$1;

    local vsplash='\';

    local vsplash2='\\';

    local vsplash2d='\\.';

    vfile=`echo "${vfile}" | sed -ne "s/\./${vsplash2d}/gp"`;

    local vtmp1=${vfile%%${g_spwc}*};

    local vtmp2=${vfile#*${g_spwc}};

    local vDestPattern="";

    declare -i tii;

    tii=1;

    if [ -z "${vtmp1}" ] ; then

    vDestPattern+=`echo "${vsplash}${tii}"`;

    vtmp1=${vtmp2%%${g_spwc}*};

    vtmp2=${vtmp2#*${g_spwc}};

    tii+=1;

    fi

    while [ \( ! -z "${vtmp1}" \) -a \( ! -z "${vtmp2}" \) -a \( "${vtmp1}" != "${vtmp2}" \) ] ;

    do

    vDestPattern+="${vtmp1}";

    vDestPattern+=`echo "${vsplash}${tii}"`

    vtmp1=${vtmp2%%${g_spwc}*};

    vtmp2=${vtmp2#*${g_spwc}};

    tii+=1;

    done

    if [ ! -z "${vtmp1}" ] ; then

    vDestPattern+="${vtmp1}";

    if [ -z "${vtmp2}" ] ; then

    vDestPattern+="${vsplash}${tii}";

    fi

    elif [ ! -z "${vtmp2}" ] ; then

    vDestPattern+="${vsplash}${tii}${vtmp2}";

    fi

    echo "${vDestPattern}"

    }

    #把通配符转换为'*'号,供ren函数查找文件用

    function cvtWildCardToAsterisk

    {

    echo "$1" | sed -ne "s/${g_wildcard}/\*/gp";

    }

    #需要注意的是,源文件名中的通配符数量要大于或者等于目标文件名通配符的数量

    function ren

    {

    local vsrcfile=`echo "$1"`;

    local vdestfile=`echo "$2"`;

    local vsrcPatternFile="";

    if [ $# -ne 2 ] ; then

    echo -e "invalid useage!"

    ren_usage;

    fi

    local tmpfile="";

    local finalDestfile="";

    local tmpSrcPattern="";

    local tmpDestPattern="";

    tmpSrcPattern=`cvtSrcNameToPattern "${vsrcfile}"`;

    tmpDestPattern=`cvtDestNameToPattern "${vdestfile}"`;

    vsrcPatternFile=`cvtWildCardToAsterisk "${vsrcfile}"`;

    for tmpfile in ${vsrcPatternFile}

    do

    finalDestfile=`echo "${tmpfile}" | sed -ne "s/${tmpSrcPattern}/${tmpDestPattern}/p"`;

    if [ -e "${tmpfile}" ] ;then

    echo "mv \"${tmpfile}\" \"${finalDestfile}\""

    mv "${tmpfile}" "${finalDestfile}"

    else

    echo "source file ${vsrcfile} does not exist!!"

    fi

    done

    }

    function ren_usage

    {

    echo -e "Usage: ren srcname destname"

    echo -e "Example: \"ren a.c b.c\" or \"ren a.${g_wildcard} b.${g_wildcard}\" or \"ren ${g_wildcard}.c ${g_wildcard}.cpp\""

    echo -e "Note: The wildcard is \"${g_wildcard}\"!"

    }

    ren "$@"

    展开全文
  • 批量修改文件名称,剔除部分相同的内容。 for name in `ls *.a`;do mv $name ${name%-x86_64-unknown-linux-gnu*}.a;done 解释说明:‘ls *.a’是改目录下所有的.a文件,mv 源文件名 替换文件名,${name%-x86_...

    批量修改文件名称,剔除部分相同的内容。

    for name in `ls *.a`;do mv $name ${name%-x86_64-unknown-linux-gnu*}.a;done

    解释说明:‘ls *.a’是改目录下所有的.a文件,mv  源文件名  替换文件名,${name%-x86_64-unknown-linux-gnu*}:去掉文件名‘-x86_64-unknown-linux-gnu’右边的字符串,留下左边的。

    参考:https://www.cnblogs.com/xiaomai333/p/9760304.html

    展开全文
  • /bin/sh# 批量修改文件名# 需传入三个以上的参数 $1 $2 $3...#先判断参数 参数要3个以上# we have less than 3 arguments. Print the help text:# edit by www.jquerycn.cnif [ $# -lt 3 ] ; thencat <ren -- ...

    代码如下:

    复制代码 代码示例:

    #!/bin/sh

    # 批量修改文件名

    # 需传入三个以上的参数 $1 $2 $3...

    #先判断参数 参数要3个以上

    # we have less than 3 arguments. Print the help text:

    # edit by www.jquerycn.cn

    if [ $# -lt 3 ] ; then

    cat <

    ren -- renames a number of files using sed regular expressions

    USAGE: ren 'regexp' 'replacement' files...

    EXAMPLE: rename all *.HTM files in *.html:

    #这里使用ren 'HTM$' 'html' *.HTM  ...'HTM$' 这是指文件名的尾部,作者提示这样可以漂亮修改后缀名。

    ren 'HTM$' 'html' *.HTM

    HELP

    exit 0

    fi

    #取前面两个字,替换旧文件名部分字符串 和 新的字符串

    OLD="$1"

    NEW="$2"

    # The shift command removes one argument from the list of

    # command line arguments.

    #这里比较关键,两次shift就是把$3变成$1,下面才能正常使用$*,才可以正常取文件列表

    shift

    shift

    # $* contains now all the files:

    #处理过程

    for file in $*; do

    if [ -f "$file" ] ; then

    #输出处理

    newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`

    if [ -f "$newfile" ]; then

    echo "ERROR: $newfile exists already"

    else

    echo "renaming $file to $newfile ..."

    mv "$file" "$newfile"

    fi

    fi

    done

    展开全文
  • #!/bin/bash #批量修改文件名称 cd /opt/test for lfile in * do lnew=`echo $lfile |awk '{print $0}'|sed -n 's/ippbx/idds/p'` mv $lfile $lnew done
    #!/bin/bash
    #批量修改文件名称
    cd /opt/test
    for lfile in *
    do
      lnew=`echo $lfile |awk '{print $0}'|sed -n 's/ippbx/idds/p'`
      mv $lfile $lnew
    done
    展开全文
  • 使用mmv批量重命名文件 首先要安装mmv apt-get install mmv 示例一 想删除重复的扩展名,例如扩展名是.rar.rar.rar,只保留一个.rar,可以使用如下命令。 操作前: mmv '*.*.*.*' '#1.#2' 操作后: 示例二 修改...
  • linux 批量修改文件后缀名

    万次阅读 2018-10-10 20:50:23
    想到的思路是:先列举出文件名称,再用awk对文件名称进行处理分割,最后将后缀名进行修改。 首先列举出文件名称,得到如图: 之后考虑获取名称,如“abad.jpg”,再将名称以“.”号分割,得到名称“abad”,再...
  • 批量查询当前目录下... -name 'runSyncTool.sh' | xargs sed -n'/sync1.properties/p' 批量修改当前目录下所有文件内容, 修改"sync1.properties"为"sync.properties" find . -name 'runSyncTool.sh' | xargs sed...
  • mac/linux批量修改文件名称的方式

    千次阅读 2018-08-19 10:23:55
    最近在批处理文件时,需要将所有文件的后缀改为csv格式,查询很多资源后找到了可用方法: 具体代码很简单,为下所示: for i in *; do mv "$i" "$i.csv"; done 必须在所在文件夹下打开。...
  • 最近在工作中需要在linux主机上批量修改文件,将一些文件名-del的标志删除,即文件名ST-2021/1/31-del.zip 修改为 ST-2021/1/31.zip,这样的文件有大几千个, 而且在不同的文件夹内,此时则自然想到了shell脚本,可以很...
  • 问题:同以目录下有海量以日期命名的文件,其中有的有后缀,有的以点结尾,如20020101.,20020102.,……,20020101.td,20020102.td……要求: 把所有以点结尾的加上后缀.ts我的方法:#!/bin/bashfor files in `ls...
  • 在windows cgywinportable上,通过执行linux命令,批量修改文件名称
  • 循环遍历目标文件夹下的所有文件和文件夹,并修改每个文件的内容以及文件夹和文件名称,保存至文件changecontent.sh 用法:chmod +x changecontent.sh; ./changecontent.sh mydir(目标文件夹) #!/bin/bash if [ ...
  • Linux 中使用 mv 命令可以重命名或者移动文件及目录,但是它不支持一次重命名多个文件。本文介绍mmv的使用方式,使用通配符模式移动/复制/追加/链接多个文件。环 境Centos7.7安装mmv在默认情况下,Centos7的网络...
  • 【1】递归打印文件名称 切记穿入参数是绝对路径就会输出绝对路径,穿入参数是相对路径输出相对路径 function mvAtoa(){ for file in `ls $1 ` ; do echo "mv_$1/$file";## 打印文件名称 if ...
  • 1. 当前及其子目录下的文件添加后缀.old ...2. 将当前及其子目录下".old"的文件的后缀修改为".old2" find ./ -name "*.old" -type f | awk -F "." '{print $2}' | xargs -i -t mv ./{}.old ./{}.old2 ...
  • 为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt我们可以用 ${ } 分别替换获得不同的值:${file#*/}:拿掉第一条 / 及其左边的字符串...
  • 这篇文章主要为大家介绍了linux系统中如何批量修改图片文件名的案例演示,如果想修改linux文件夹下的图片名称,但是图片很多一个一个修改浪费时间,如何批量修改呢?如10.11一批这样的目录,10.11 10.12等等然后里面...
  • Linux 中使用 mv 命令可以重命名或者移动文件及目录,但是它不支持一次重命名多个文件。本文介绍mmv的使用方式,使用通配符模式移动/复制/追加/链接多个文件环境Centos7.7安装mmv在默认情况下,Centos7的网络源中...
  • rename .txt.COMPLETED .txt *.txt.COMPLETED 详细:http://blog.csdn.net/longxibendi/article/details/6387732
  • linux批量修改目录下所有文件夹、文件名称及文件内容
  • 批量修改文件名称

    2009-05-22 22:04:00
    下载了支持 eabi 的 gcc 4.3.3 发现里面的可执行文件都是以 arm-none-linux-gnueabi- 开头...通过下面的脚本来修改所有文件名称: for f in $(ls) ; do sudo mv $f ${f/arm-none-linux-gnueabi/arm-linux} ; done 
  • 本程序根据其他同学的方法总结修改而来,主要方便自己修改文件 话不多说,直接贴代码,需要同学自取 #include <stdio.h> #include <dirent.h> #include <stdlib.h> #include <string.h> ...
  • Linux中使用 mv命令可以重命名或者移动文件及目录,但是它不支持一次重命名多个文件。本文介绍mmv的使用方式,使用通配符模式移动/复制/追加/链接多个文件 环境 Centos7.7 安装mmv 在默认情况下,Centos7的...
  • sign的图片修改文件名称,类似于20180405095522_44158.jpg?sign=924ca3be4ffca6c5fbad798e7e643ab4&t=5ac588d3这样的文件名称修改成20180405095522_44158.jpg。如果没有带?sign的图片不用管,请问用linux命令...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 158
精华内容 63
关键字:

linux批量修改文件名称

linux 订阅