zoukankan      html  css  js  c++  java
  • Linux:重命名

    Linux下对文件重命名有两种命令: mv  ,rename

    “mv命令只能对单个文件重命名”,这实就是mv命令和rename命令的在重命名方面的根本区别。

    mv很简单,move文件移动

    mv /dir/file1  /dir2/file1

    linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹.
    例子:将目录A重命名为B
    mv A B
    例子:将/a目录移动到/b下,并重命名为c
    mv /a /b/c

    rename  arg1  arg2  arg3

    rename才是真正的批量重命名命令。而且他是3个参数,不是2个。

    arg1:旧的字符串

    arg2:新的字符串

    arg3:匹配要重命名的文件,可以使用3种通配符,*、?、[char],*表示任意多个字符,?表示单个字符,[char]匹配char单个自定的精确字符,可以填写任意字符,foo[a]*表示只匹配fooa开头的文件名,如果一个文件是foobcc.txt,是不会被匹配的。

    值的注意的是,此命令在不同的linux版本也有不同,Debian一系的操作系统别有用法。举例说明:

    比如/home下有两个文件 abbcc.txt, addbb.txt , a.txt

    我想把a替换为xxx,命令是这样的 : rename “a” “xxx” *.txt

    那么它会首先去匹配有哪些文件需要修改,这里凡是.txt后缀的文件都会被匹配,如果改成?.txt则只会匹配到一个文件,那就是a.txt。然后把匹配到的文件中的a字符替换为xxx,注意测试时abab.txt这样的,只会替换第一个a,有待再了解。

    说到Debian一系的操作系统,比如Ubuntu,这个命令这样使用是不对的,报错,向下面这样的:

    Bareword “a” not allowed while “strict subs” in use at (eval 1) line 1.

    经过Google之后发现有这样的说法:

    On Debian-based distros it takes a perl expression and a list of files. you need to would need to use:
    rename ‘s/foo/foox/’ *

    这里是一个perl表达式,好理解点说就是综合了前两个参数为1个,这样就只需要2个参数,而非上面所说的3个参数形式。

    所以在Ubuntu下执行上面举例的重命名时,命令是这样的:rename ‘s/a/xxx/’ *.txt

  • 相关阅读:
    Luogu P4002 [清华集训2017]生成树计数
    Luogu P3978 [TJOI2015]概率论
    Codechef JADUGAR2 Chef and Same Old Recurrence 2
    Codechef TREDEG Trees and Degrees
    一些有趣的数
    有向图上Euler回路计数
    P5105 不强制在线的动态快速排序
    二分图小结
    BZOJ2648: SJY摆棋子
    P3231 [HNOI2013]消毒
  • 原文地址:https://www.cnblogs.com/xwb583312435/p/9044276.html
Copyright © 2011-2022 走看看