700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux下批量改文件名命令 Linux 批量更改文件名命令

linux下批量改文件名命令 Linux 批量更改文件名命令

时间:2024-07-26 23:10:07

相关推荐

linux下批量改文件名命令 Linux 批量更改文件名命令

想把一部分文件加上日期序。也就是在文件名称前加上当前的年月日进行输出。

获取日期格式如下

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ date +%Y%m%d

1112

1、使用find、awk/grep/sed、mv等命令组合来实现

Ubuntu下

利用awk命令进行制作,操作如下

1)找到需要进行操作的文件名

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ find -name ‘*.jpg’ -printf %f\\n|grep -v ^[0-9] |grep -v logo.jpg

se_platform.jpg

soa1.jpg

soa4.jpg

java_primitive_data_type.jpg

soa3.jpg

soa2.jpg

2)提取文件名,保持文件扩展名不变

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ find -name ‘*.jpg’ -printf %f\\n|grep -v ^[0-9] |grep -v logo.jpg|awk -F ‘.’ ‘{print $1}’

se_platform

soa1

soa4

java_primitive_data_type

soa3

soa2

3)对文件进行批量替换操作

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ find -name ‘*.jpg’ -printf %f \\n|grep -v ^[0-9] |grep -v logo.jpg|awk -F ‘.’ ‘{print $1}’|

xargs -i{} mv {}.jpg `date +%Y%m%d`{}.jpg

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ ls

0818a.jpg 0919twitter4.jpg

0818learn.jpg 1110open_project.jpg

0819java1.png 1112java_primitive_data_type.jpg

0819javaseplatformroadmap.gif 1112se_platform.jpg

0916neiji.jpg 1112soa1.jpg

0916waiji.jpg 1112soa2.jpg

0919photo.jpg 1112soa3.jpg

0919twitter.jpg 1112soa4.jpg

0919twitter2.jpg logo.jpg

0919twitter3.jpg

利用nawk命令进行制作,操作如下

1)找到要操作的文件名

Zianed@ubuntu:~/sedcommand$ find ./ -type f | grep “log” |sed -n ’s/\.\///p’

test2.log

test1.log

2)进行文件名更改操作

Zianed@ubuntu:~/sedcommand$ ls *.log

test1.log test2.log

Zianed@ubuntu:~/sedcommand$ find ./ -type f | grep “log” |sed -n ’s/.\///p’ |

nawk ‘{oldname=$1;$2=`date +%Y%m%d`$1;newname=$1;print “mv ” oldname ” ” newname }’ | /bin/sh

nawk: warning: escape sequence `\.’ treated as plain `.’

Zianed@ubuntu:~/sedcommand$ ls *.log

test1_test.log test2_test.log

Zianed@ubuntu:~/sedcommand$

利用sed命令进行制作,操作如下

find / -type f -name “*.sql” | sed s/\(.*\)\.sql/mv & \1.pls/’ | sh

2、编写Shell脚本运行

保存为一个Shell脚本

#!/bin/bash

#script_name:rename_ALL

find ./ -type f | grep “txt” |sed -n ’s/\.\///p’| nawk ‘{oldname=$1;

sub(/\./,”_test\.”);

newname=$1;

print “mv ” oldname ” ” newname }’ | /bin/sh

将上述代码保存为文件rename_ALL

修改脚本的属性,使它能执行:chmod u+x rename_ALL

执行:./rename_ALL

来自网络

看起来很管用,要是能够进行将要改的文件名格式传递进去就更好了。

3、使用rename命令

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ rename –help

Unknown option: help

Usage: rename [-v] [-n] [-f] perlexpr [filenames]

man rename发现,

“rename” renames the filenames supplied according to the rule specified as the first argument.

The perlexpr argument is a Perl expression which is expected to modify the $_ string in Perl for at least some of the filenames specified.If a given filename is not modified by the expression,it will not be renamed. If no filenames are given on the command line, filenames will be read via standard input.

For example, to rename all files matching “*.bak” to strip the extension, you might say

rename ’s/\.bak$//’ *.bak

To translate uppercase names to lower, you’d use

rename ‘y/A-Z/a-z/’ *

命令格式:

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

perlexpr 是一种 Perl 脚本格式的正则表达式。

files 文件名通配符

参数:

-v, –verbose

Verbose: print names of files successfully renamed.

详细模式:打印成功更改的文件名列表

-n, –no-act

No Action: show what files would have been renamed.

测试模式:并不真正的执行命令,而只是显示哪些文件名应该怎么进行更改,用于测试模式。

-f, –force

Force: overwrite existing files.

强制模式:在更改文件名,如果更改后的文件已经存在时覆盖已经存在的文件。

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ ls

0819java1.png 09v9twitter4.jpg

0819javaseplatformroadmap.gif vvv0epen_preject.jpg

08v8lerrn.jpg vvv2jrvr_primitive_drtr_type.jpg

08v8r.jpg vvv2se_plrtferm.jpg

09v6neiji.jpg vvv2ser2.jpg

09v6wriji.jpg vvv2ser3.jpg

09v9phete.jpg vvv2ser4.jpg

09v9twitter.jpg vvv2serv.jpg

09v9twitter2.jpg lege.jpg

09v9twitter3.jpg

将*.jpg文件名中的09v9改为0919

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ rename ’s/09v9/0919/’ *.jpg

Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ ls

0819java1.png 09v6wriji.jpg

0819javaseplatformroadmap.gif vvv0epen_preject.jpg

08v8lerrn.jpg vvv2jrvr_primitive_drtr_type.jpg

08v8r.jpg vvv2se_plrtferm.jpg

0919phete.jpg vvv2ser2.jpg

0919twitter.jpg vvv2ser3.jpg

0919twitter2.jpg vvv2ser4.jpg

0919twitter3.jpg vvv2serv.jpg

0919twitter4.jpg lege.jpg

09v6neiji.jpg

rename 的典型应用:

0. 批量更改文件扩展名

$ rename ’s/\.txt/\.ext/’ *

1. 批量删除文件扩展名

$ rename ’s/\.txt//’ *

2. 批量添加文件扩展名

$ rename ’s/$/\.txt/’ *

3. 按自己的方式批量重命名文件

$ rename ’s/(\d)/第$1 章/’ *

$ rename s/_/-/ *.jpg #修改所有的包含_的.jpg文件中的_为-

4 rename _sg _se *

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。