想把一部分文件加上日期序。也就是在文件名称前加上当前的年月日进行输出。
获取日期格式如下
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ date +%Y%m%d
20091112
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
20090818a.jpg 20090919twitter4.jpg
20090818learn.jpg 20091110open_project.jpg
20090819java1.png 20091112java_primitive_data_type.jpg
20090819javaseplatformroadmap.gif 20091112se_platform.jpg
20090916neiji.jpg 20091112soa1.jpg
20090916waiji.jpg 20091112soa2.jpg
20090919photo.jpg 20091112soa3.jpg
20090919twitter.jpg 20091112soa4.jpg
20090919twitter2.jpg logo.jpg
20090919twitter3.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
20090819java1.png 200909v9twitter4.jpg
20090819javaseplatformroadmap.gif 2009vvv0epen_preject.jpg
200908v8lerrn.jpg 2009vvv2jrvr_primitive_drtr_type.jpg
200908v8r.jpg 2009vvv2se_plrtferm.jpg
200909v6neiji.jpg 2009vvv2ser2.jpg
200909v6wriji.jpg 2009vvv2ser3.jpg
200909v9phete.jpg 2009vvv2ser4.jpg
200909v9twitter.jpg 2009vvv2serv.jpg
200909v9twitter2.jpg lege.jpg
200909v9twitter3.jpg
将*.jpg文件名中的09v9改为0919
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ rename ’s/09v9/0919/’ *.jpg
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ ls
20090819java1.png 200909v6wriji.jpg
20090819javaseplatformroadmap.gif 2009vvv0epen_preject.jpg
200908v8lerrn.jpg 2009vvv2jrvr_primitive_drtr_type.jpg
200908v8r.jpg 2009vvv2se_plrtferm.jpg
20090919phete.jpg 2009vvv2ser2.jpg
20090919twitter.jpg 2009vvv2ser3.jpg
20090919twitter2.jpg 2009vvv2ser4.jpg
20090919twitter3.jpg 2009vvv2serv.jpg
20090919twitter4.jpg lege.jpg
200909v6neiji.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 *
For more please refer http://bbs.chinaunix.net/viewthread.php?tid=452942&extra=page%3D1%26filter%3Ddigest
分享到:
相关推荐
在Linux系统中修改文件名可以用mv命令,但是它只能对单个文件进行操作,如要要批量执行还要写shell脚本,用for语句迭代执行,不过Linux中另外一个命令支持批量替换文件名,它是rename,rename支持正则表达式匹配。...
linux中批量修改文件名的脚本代码,主要是使用了rename,结合shell,喜欢的朋友可以参考下
linux脚本批量更新文件名和映射的引用文件名,非常方便的更新你的文件名和对应的引用。
批量更新文件名和对应的引用名,这是一个很好用的批量修改文件名和文件引用的例子。
for循环结合sed替换ls结合awk,输出交给bash执行rename命令改名for循环加变量部分截取不使用echo也可以实现根据文件批量修改文件名提供的文档
www.ssczw.com文件名批量替换&添加前缀
本文主要给大家介绍了关于Linux shell用sed批量更改文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 示例 去除特定字符 目标:将 2017-01-01.jpg、2018-01-01.jpg 改为 ...
最新的 ReName(绿化)批量修改文件名/扩展名,更多功能查看。
windows的BAT或者linux的VI下批量更改替换文件名的脚本.昨天我整理文档,里面有一大堆后缀名相同的文件,如: 001.ppt、002.ppt和003.ppt这样命名的,现在要把它们修改成 课件_001.ppt、课件_002.ppt和课件_003.ppt...
Linux系统中批量创建文件,和批量修改文件名。 编写脚本,在/tmp 目录下批量创建 500 个文件,命名规则为:姓名.数字.hack.html 方法一: 1、touch name.{1…500}.hack.html 方法二: 2、for i in seq 500;do touch ...
其中re修改文件以及文件夹名的命令是这个程序的价值体现。 re/cd/ls/man这四个命令拥有命令选项,在使用命令选项的规则统一是:xx-uuff其中xx代表命令,-代表分隔符是必须的,uu代表命令选项,ff代表具体需求的字符...
本篇文章主要介绍了详解Linux批量更改文件后缀名,主要是使用了rename,有需要的朋友可以了解一下。
主要介绍了Shell脚本批量修改文件后缀名,问中收集了2个示例,需要的朋友可以参考下
1、首先, linux命令行切换到你需要修改文件名的目录之下: cd 目的目录 2、在该目录下新建sh文件: touch xxx.sh 3、打开xxx.sh文件: vim xxx.sh 3、将刚刚的脚本内容复制到该sh文件上,保存退出 编辑sh文件:...
主要介绍了php实现批量修改文件名称的方法,涉及php针对文件的遍历及文件名的替换操作相关技巧,需要的朋友可以参考下
这里提供一种使用sed命令构造命令解决处理批量文件的技巧,供参考。 需求案例1 将当前目录下所有的0_80_91.txt、0_80_92.txt、0_80_93.txt、。。。等几十个文件的文件名修改为0_81_91.txt、0_81_92.txt、0_81_93....
要介绍了shell的相关知识教程,如shell编程需要的基础知识储备...变量类型-全局变量相关知识讲解、shell的特殊变量-难点理论与实战剖析、批量修改文件名及扩展名多案例实践讲解、变量替换技术实践与生产实战教训案例等