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

  • 相关阅读:
    常用图书下载
    模式另类说明
    windows进程中的内存结构
    Windows API学习手记
    20060318工作记录
    X3全局变量及公共函数所在的命名空间说明
    PHP 后台定时循环刷新某个页面 屏蔽apache意外停止
    php随机生成指定长度的字符串 可以固定数字 字母 混合
    以div代替frameset,用css实现仿框架布局
    核中汇编写的字符串函数代码分析
  • 原文地址:https://www.cnblogs.com/xwb583312435/p/9044276.html
Copyright © 2011-2022 走看看