如何用命令修改文件名呢?在Linux下可以用rename命令,当然还可以使用mv命令,这里分享下Linux rename命令的用法。

有一部分人说Linux下没有rename命令,建议大家用mv命令。

对rename命令和mv命令在重命名文件方面做一个比较,大家根据个人喜欢选择使用吧。

mv命令,在man mv中对于mv命令的介绍:

mv -move(rename) files

可以看到mv命令确实有重命名的功能,但是实际应用中,它只能对单个文件重命名,命令如下:

mv [path/]oldfilename [path/]newfilename

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

rename命令,在man rename的说明:

NAME

rename -Rename files

SYNOPSIS

rename from to file....

DESCRIPTION

rename will rename the specified files by replacing the first occurrence of from in their name by to.

For example, given the files foo1, ..., foo9, foo10, ..., foo278, the commands

rename foo foo0 foo?

rename foo foo0 foo??

will turn them into foo001, ..., foo009, foo010, ..., foo278.

And

rename .htm .HTML *.htm

will fix the extension of your html files.

可以看出rename命令是专用于文件重命名的,而且根据其后的例子可以看出,rename除了给单个文件重命名,还可以批量文件重命名。

注意,rename命令是带3个参数而不是很多人认为的2个参数。

上面的例子中给出了两种文件批量重命名的用法,而实际上,rename结合通配符使用,它的功能比上面的例子所显示的更强大。

基本的通配符有以下几个:

?可替代单个字符

*可替代多个字符

[charset]可替代charset集中的任意单个字符

说明:

如文件夹中有这些文件foo1, ..., foo9, foo10, ..., foo278,如果使用

rename foo foo0 foo?

则它只会把foo1到foo9的文件重命名为foo01到foo09,因为?通配符只能替代单个字符,所以被重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

再继续使用

rename foo foo0 foo??

则文件夹中的foo01到foo99的所有文件都被重命名为foo001到foo099,而foo100及其以后的文件名都不变,因为通配符?的使用,所以只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果再继续使用

rename foo foo0 foo*

则foo001到foo278的所有文件都被重命名为foo0001到foo0278,因为通配符*可替代多个字符,所以,所有以foo开头的文件都被重命名了,文件名中的foo被替换为foo0。

再来看通配符[charset]的用法,还是继续在上面所说的文件夹中,执行如下命令

rename foo0 foo foo0[2]*

则从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。

在使用中,三种通配符可以一起结合使用。

总之,无论是rename命令,还是mv命令均可以完成文件名称的修改,在使用时多注意参数的不同与用法。

Linux下修改文件名或修改文件夹名称

1、修改文件夹名称

1.1我先创建一个test文件夹用来测试

mkdir test

2a633f5ef251f399d59cb620bb243adc.png 

15d09f19e61123db8f262eff81c2e5ed.png

1.2用 mv 命令 将文件移动,目标地址如果加 / 就 代表文件夹,如果没有 / 就会重新命名  例:

mv test Test

表示文件重命名

mv test /Test/

将test移动到根目录的Test文件夹下

在练习时,发现出现问题,在当前目录下用mv命令重命名时,报错,即使使用root用户,也不能执行

f7e2ccb96be7de94d066ab7491cccb47.png 

c424083cab1e16c1ab7939f64adf3eb2.png

但是用 mv test /Test/,将test移动到根目录的Test文件夹下,时,即使根目录下木有Test文件夹,系统不会报错,会直接将test文件夹移动过去,并重命名为Test

fc9019385e2562d83e7865729f361bf7.png 

bbe607a08da10a7c20cd470c71cfb1f7.png 

09a9fbfd92dfa0ad8262e1039c583c1d.png

进入系统其他文件夹(我原来是在Windows系统共享的文件夹中),mv命令一切正常执行

mv test1 Test

表示文件重命名

mv Test Test1/

Test1文件夹不存在,将文件夹Test重命名为Test1

mkdir test2

mv test2 Test1

将test2移动到当前目录的Test1文件夹下

2f50e96e6e28683c1d1be6d18a6814b3.png 

9bb9c5e03fc5f2208e0668beea54fc17.png 

b1eb1cae43ba0f87f7f8b4bf50becaf1.png

待解决问题:为什么在共享文件夹下不能操作····················

2、修改文件名

mv test.c Hello.c

9c233827a62e5356da360af33c10fd30.png

待解决问题:Linux系统下文件名是区分大小写的,文件名采用大小写是不一样的;linux变量、命令、命令参数都是区分大小写的,但是为啥在对文件重命名时,不区分大小写呢?

mv test.c Test.c

执行时,提示文件已存在········

14f2274b6fd83ad19e814923037509be.png

总结:

Linux之目录的操作(创建、移动、改名、删除、复制)

2016年05月24日 15:47:00

阅读数:5473

1.创建

mkdir [dirname] //创建单个目录

mkdir -p newdir1/newdir2/newdir3 //递归创建多级目录

mkdir dir1/dir2/newdir3 //在已存在的目录中创建目录

mkdir -p dir1/newdir2/newdir3 //在已存在的目录中递归创建多级目录

mkdir /home/zhangsan/movie //使用 相对于根目录的 ‘绝对路径’的方式创建目录

总结:新目录的层次大于1时,就需要-p参数

2.移动

mv dir1 dir2 //dir1移动到dir2的目录下,结果:dir2/dir1

mv dir1/dir2 dir3 //dir2移动到dir3的目录下,结果:dir3/dir2

mv dir1/dir2 dir3/dir4 //dir2移动到dir4的目录下,结果:dir3/dir4/dir2

mv /home/zhangsan/movie /home/lisi/video //movie移动到video目录下,结果:/home/lisi/video/movie

3.改名

mv dir1 newdir //dir1移动到当前目录下,并改名字为newdir

mv dir1/dir2 dir3 //dir2移动到dir3目录下,并改名为原名,结果:dir3/dir2

mv dir1/dir2 dir3/newdir //dir2移动到dir3目录下,并改名为newdir,结果:dir3/newdir

4.复制

cp -R dir1 dir2 //dir1复制到dir2目录下,结果:dir2/dir1

cp -R dir1/dir2 dir3/newdir //dir2复制到dir3目录下,并改名为newdir,结果:dir3/newdir

cp -R dir1/dir2 newdir //dir2复制到当前目录下,并改名为newdir

cp dir1/file1 dir2 //file1复制到dir2目录下,结果:dir2/file1

cp dir1/file1 dir2/dir3/file2 //file1复制到dir3目录下,并改名为file2,结果:dir2/dir3/file2

5.删除

rm [filename] //删除文件

rm -r [dirname] //删除目录

rm -rf [filename] //强制删除文件

rm -rf [dirname] //递归强制删除目录

rm -rf / //递归强制删除”/斜杠”根目录(一旦删除,系统崩溃,慎用!!!)

Logo

更多推荐