2, Perl 版本的批量重命名,带有Perl的好处是,你可以使用正则表达式来完成很奇特的功能。

perl 版本的参数格式:

rename  perlexpr files

注意,perl版本的rename只有两个参数,第一个参数为perl正则表达式,第二个参数为所要处理的文件

man rename的帮助示例:

1) 有一批文件,以 .bak结尾,现在想把这些 .bak 统统去掉。

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

这个命令很简单,因为我还没有系统学习过perl,我不知道perl里替换字符串是不是这么干的,但sed是这么干的,所以如果你有sed或者tr基础,很容易明白,这个替换和sed里的正则语法是一模一样的。

2) 把所有文件名内含有大小字母的,修改为小写字母。

rename      'y/A-Z/a-z/'        *

依然和sed的替换语法一样,不用多解释,如果看不懂的话,可以系统学习一下sed先。

还有几个比较实用的例子:

1) 批量去掉文件名里的空格

Linux文件名本来是不支持空格的,不知道什么时候允许了,当然,在命令行调用文件的时候,空格是很有问

题滴,比如你 原来可以直接  mv  oldfile  newfile  但有空格就不行了 , 得加双引号: mv "oldfile"

"newfile" 或者用反斜杠转移  \[] ,这样还好,但如果你直接把含有空格的图片名引入

Latex文档,Latex生成pdf的时候会直接打印出文件名,之前这个问题苦恼了我很久,我生成的pdf怎么老是出现文件名呢?后来才发现原来是文件

名内含有空格的问题!windows系统下生成的文件名是天生含有空格的,虽然很讨厌,但有些惠普扫描仪生成的图片默认就加入了空格,没有办法,只好去掉

他,在系统研究rename命令前,我是用 mv 去除空格的。

网上流程的两个去空格的版本:

1) tr 版:

find . -type f -name "* *" -print |

while read name; do

na=$(echo $name | tr ' ' '_')

if [[ $name != $na ]]; then

mv "$name" $na

fi

done

这个版本以前我一直用的,不知道哪个网上搜刮来的,当时还没有系统的学习过 tr/sed/awk命令。

注解一下,很好理解, find .

type f -name "* *" -print 这一句是查找当前目录下所有类型为普通文件的 并且名字之中含有空格的文件,并打印出来,其实

find默认就是打印的 这个 -print 多余了,然后 通过管道传输给 while 循环读取,文件名放到 name 变量里,用 tr 命令

替换空格为 下划线。 下面判断如果执行后的名称不相同,使用 mv

命令重命名。但这个if判断可有可无,因为find已经查询了所有文件名中含有空格的,那么经过 tr 命令后, $na变量肯定不等于 $name

变量的。

所以这段代码可以简化:

find . -type f -name "* *" |

while read name; do

na=$(echo $name | tr ' ' '_')

mv "$name" "$na"

done

tr 可以看着是 sed 的一个精简版本,tr 用下划线来替换空格。

还有一个 是 sed 版本实现:

for f in *;do mv "$f" `echo "$f" | sed 's/[ ]\+/_/g' `; done

这里的 sed表达式还可以这样写:

sed 's/[[:space:]]\+/_/g'

不过记住,sed里的出现一次或多次的加号是需要添加反斜杠的。即:\+

这样就可以了。

好了,这两种办法都太他妈罗嗦了,看看rename实现吧:

rename      's/[ ]+/_/g'        *

OK就这么简单。

方括号内的空格可以用 [:space:]代替,

即可以写成 's/[[:space:]]+/_/g'

这里注意,rename 采用的是标准perl正则语法,所以无须将 加号转变为反斜杠加号

即 + 不能修改为 \+,否则替换失败。

还有几个好玩的例子:

比如统一在文件头部添加上 hello

rename          's/^/hello/'        *

统一把.html扩展名修改为 .htm

rename          's/.html$/.htm/'      *

统一在尾部追加 .zip后缀:

rename          's/$/.zip/'      *

统一去掉.zip后缀:

rename          's/.zip$//'      *

Ok ,rename就研究了这么多,暂时不知道如何在rename中引入动态变量,比如 $i++

我测试过 i=0;  rename -n "s/^.*$/$((++i))/"   *  执行后i被自增了1,并非想我想像中那样,可以在每操作一个文件自增一,猜想可能是因为rename批量实现的,导致++i只计算一次!

-n 用来测试rename过程,并不直接运行,可以查看测试效果后,然后再运行。

linux批量修改文件名多目录,Linux下批量修改文件名相关推荐

  1. linux中显示没有那个目录,linux没有那个文件或目录

    linux下创建文件与目录时默认被赋予了什么样的权限? 当我们创建一个新的文件或目录的时候,他的默认权限是什么? umask--指定当前使用者在创建文件或目录的时候默认的权限值 [root@iZ288 ...

  2. linux打开文件夹所有文件名,获取文件夹下的所有文件名 (linux windows)

    windows下获取文件夹下的所有文件名 1 #include "folder.hpp" 2 #include 3 4 void getFilesFromFolder(const ...

  3. linux修改默认发布目录,Linux环境更改Jenkins默认主目录

    Linux系统修改Jenkins默认主目录 由于Jenkins默认主目录空间太小,生产中需要将默认目录修改到其它目录.Linux环境中,Jenkins主目录默认在/root/.jenkins 注意:线 ...

  4. linux怎么切换到etc目录,Linux的/etc目录下自己使用到的一些配置

    etc stand for "etcetera." 意思为附加物.等等.Linux的/etc目录下存放的是重要的系统配置 1. profile文件 在用户态写程序时,如果出现段错误 ...

  5. linux svn同步到本地目录,LINUX中SVN服务的搭建与实现SVN 自动同步到web目录,SVN自动启动...

    一,下载相关软件: [root@localhost test]# wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz ...

  6. linux打补丁要选择目录,Linux下patch打补丁命令实例详解

    linux下patch命令使用详解---linux打补丁命令 功能说明: 修补文件. 语 法: patch [-bceEflnNRstTuvZ][-B ][-d ][-D ][-F ][-g ][-i ...

  7. linux解压zip覆盖目录,linux下压缩与解压(zip、unzip、tar)详解

    最近经常在linux上进行打包压缩解压,从网上收集整理并结合自己的常用的,跟大家分享一下下,废话不多说,进入正题. 1.zip 压缩 如果是直接压缩几个文件,那就可以直接使用命令 zip newfil ...

  8. linux path环境变量检索目录,Linux下动态链接库加载路径及搜索路径问题

    引子 近日,服务器迁移后,偷懒未重新编译nginx的,直接./nginx启动,结果遇到如下问题: "error while loading shared libraries" 这是 ...

  9. linux使用设备文件的目录,Linux系统下的/dev目录

    dev是设备(device)的英文缩写./dev这个目录对所有的用户都十分重要.下面学习啦小编给大家分享详解Linux系统下的/dev目录,欢迎阅读: 详解Linux系统下的/dev目录: 在这个目录 ...

最新文章

  1. 【VS实践】代码调试与错误处理
  2. NutzWk 5.2.4 发布,Java 微服务分布式开发框架
  3. OJ问题检测程序---python开发
  4. js 获取 屏幕 可用高度...
  5. 2016 排行前20 的编程语言
  6. Winform Echarts 显示百度地图的用法(3)
  7. php由哪几部分组成,微型计算机通常是由哪几部分组成?
  8. windows进程间通信
  9. 微信小程序picker中的rang 和rang-key
  10. 软件工程之软件概要设计
  11. 插件对计算机的运行有什么影响吗,电脑插件太多导致电脑运行缓慢怎么办 - 驱动管家...
  12. VS2008中关于“加载安装组件时遇到问题。取消安装”的解决办法
  13. PS使模糊图片变清晰
  14. Neural Approaches to Conversational AI
  15. vue3中 provide 和 inject 用法
  16. shiro学习之错误 No realms have been configured! One or more realms must be present to execute an authori
  17. jmeter报错 com/amazonaws/auth/AWSCredentials
  18. java基于ssm开发的弹幕视频网站源码
  19. 快速对齐word目录页码
  20. 什么是CUDA与CUDNN

热门文章

  1. 卸载WPS后,原office出现各种问题,报错,图标混乱
  2. 用 Python 分析了所有微信好友,发现了一个秘密...
  3. SPA(单页面应用)
  4. 刘强东与章泽天共同成立新公司:分别持股99%、1%
  5. Unity游戏开发时注意事项和难点
  6. 金山小火车【转自官网】(如果错误,请留言)
  7. 一个小时学会MySQL数据库
  8. MTK 按键驱动流程总结
  9. CSS中的表格2️⃣之合并/拆分单元格以及单元格中在存放表格(跨行或者跨列)
  10. html单元格上下拆分代码,在HTML / CSS中如何垂直拆分表格单元格(特殊版本)