linux命令

您所在的位置:网站首页 ubantu文件重命名 linux命令

linux命令

2023-08-31 17:07| 来源: 网络整理| 查看: 265

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