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

获取日期格式如下

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 *

linux下批量改文件名命令,Linux 批量更改文件名命令相关推荐

  1. linux下剪切文件怎么恢复,linux下文件夹的创建、复制、剪切、重命名、清空和删除命令...

    在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinozzz 一.目录创建 在/home/wwwroot目录下新建一个sinozzz123的 ...

  2. Linux下实用的查看内存和多核CPU状态命令

    Linux下实用的查看内存和多核CPU状态命令 ]作者:zale0_0 来源:博客园 发布时间:2012-02-08 14:49 阅读:12 次 原文链接 [收藏] 查看多核CPU命令 mpstat ...

  3. C++笔记之linux下非阻塞多线程运行多个系统shell命令(popen方法)

    参考博文:C++ linux 睡眠函数sleep和std::this_thread::sleep_for 参考博文:C++笔记之linux下运行系统shell命令(popen方法)函数封装 参考博文: ...

  4. linux下wps 点击无反应 无法打开 在命令行也打不开,最开始可以打开,关机重启之后不能够打开

    linux下wps 点击无反应 无法打开 在命令行也打不开,安装之后可以打开,关机重启之后打不开了 解决方案: 删除~/.config/Kingsoft文件 然后重启,一切正常 转载自https:// ...

  5. Linux下查看DNS服务器IP地址以及使用host命令查询域名对应的IP地址

    Linux下查看DNS服务器IP地址以及使用host命令查询域名对应的IP地址 Linux使用etc/resolv.conf文件来存放DNS服务器的IP地址,使用cat命令查看. cat /etc/r ...

  6. linux下怎么进入mysql界面_linux界面进入mysql命令

    linux下通过命令我们可以直接连接mysql进入mysql命令行模式.下面由学习啦小编为大家整理了linux下进入mysql命令的相关知识,希望对大家有所帮助! linux下进入mysql命令 连接 ...

  7. linux系统怎么查看raid卡信息,LINUX下查SCSI卡、RAID卡信息的命令

    Linux下查SCSI卡.RAID卡信息的命令 shell#cat /proc/scsi/scsi shell#/sbin/lspci shell#/usr/sbin/dmidecode 例: [ro ...

  8. linux下安装.hex文件,HexEdit Linux下命令集

    Linux下Ganglia集群监控安装.配置笔记 http://www.blogjava.net/henry14/archive/2011/12/17/ganglia.html 枪声依旧 Linux下 ...

  9. zip分卷压缩linux命令,linux下zip分卷压缩及linux下zip分卷解压

    本文关键词:linux合并zip文件.linux下zip分卷压缩及linux下zip分卷解压.linux下zip分卷解压.linux下zip分卷压缩. 先压缩原始文件 [root@laofuxi.co ...

  10. linux 下查看应用版本信息,Linux下查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等. 1.# uname -a   (Linux查看版本当前操作系统内核信息) 2.# cat /proc/vers ...

最新文章

  1. NAR:UNITE真菌鉴定ITS数据库——处理未分类和并行分类(数据库文章阅读笔记Markdown模板)...
  2. 当Elasticsearch遇见Kafka
  3. php写网页6,thinkphp6输出原始html内容 - 旗云号
  4. centos7使用yum安装jdk并配置jdkhome
  5. MSSQL · 最佳实践 · 使用混合密钥实现列加密
  6. 动手理解Vue导航守卫
  7. 用Scikit-learn和TensorFlow进行机器学习(一)
  8. Hive安装中遇到过的坑
  9. 动态添加模板列及保持页面状态
  10. python的os模块使用_Python之os模块的常见用法
  11. ssh进入docker容器_如何通过SSH进入正在运行的容器
  12. opencv之划痕缺陷检测
  13. 保活 进程唤醒_Android 8.0以上系统应用如何保活
  14. mac修改锁定文件的解决方法
  15. 二层交换机与三层交换机的区别
  16. 数仓指标体系--建设方法
  17. OpenCV求解数独
  18. 【问题记录】labelImg:一款实用图片标注工具的安装和使用
  19. Ant Design Table columns 参数配置隐藏列方法
  20. 2023年Node.js全网详细下载安装的最新教程

热门文章

  1. 通过zCloud实现数据库故障的“1-3-5”一站式高效处理
  2. nth-of-type和nth-child的区别与相关使用
  3. 第二次作业-产品分析
  4. 什么是云连接?云学院带你了解华为云连接知识
  5. 大学可以这样读——我的心路历程和一点思考
  6. ros1-gazebo创建世界和机器人模型(单线雷达、多线雷达、相机)
  7. Java面向对象的编程⑤面向对象
  8. SSD固态硬盘颗粒SLC MLC TLC QLC有什么区别
  9. 导电聚合物中热电效应转换原理
  10. ios开发工具_7个基本的ios开发人员工具