linux命令 |
您所在的位置:网站首页 › ubantu文件重命名 › linux命令 |
Linux文件重命名有两种方式:mv和rename 一、mv mv srcFile destFile mv一次只能重命名一个文件,而且,它是移动命令。如果destFile已经存在的话,会直接装原文件覆盖,从而造成文件的丢失。
二、rename rename arg1 arg2 arg3 rename才是真正的批量重命名命令。而且他是3个参数,不是2个。 arg1:旧的字符串 arg2:新的字符串 arg3:匹配要重命名的文件,可以使用3种通配符,*、?、[char],*表示任意多个字符,?表示单个字符, [char]匹配char单个自定的精确字符,可以填写任意字符,foo[a]*表示只匹配fooa开头的文件名,如果 一个文件是foobcc.txt,是不会被匹配的。 但此命令在不同的linux版本也有不同,CentOS等用法: 比如/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
【错误】:显示substitution replacement not terminated at (user-supplied code) 原:rename 's/\.txt/\.c' *.txt 【原因】:格式不对,少打一个/ 【解决方法】:rename 's/\.txt/\.c/' *.txt
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |