linux批量修改文件名多目录,Linux下批量修改文件名
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下批量修改文件名相关推荐
- linux中显示没有那个目录,linux没有那个文件或目录
linux下创建文件与目录时默认被赋予了什么样的权限? 当我们创建一个新的文件或目录的时候,他的默认权限是什么? umask--指定当前使用者在创建文件或目录的时候默认的权限值 [root@iZ288 ...
- linux打开文件夹所有文件名,获取文件夹下的所有文件名 (linux windows)
windows下获取文件夹下的所有文件名 1 #include "folder.hpp" 2 #include 3 4 void getFilesFromFolder(const ...
- linux修改默认发布目录,Linux环境更改Jenkins默认主目录
Linux系统修改Jenkins默认主目录 由于Jenkins默认主目录空间太小,生产中需要将默认目录修改到其它目录.Linux环境中,Jenkins主目录默认在/root/.jenkins 注意:线 ...
- linux怎么切换到etc目录,Linux的/etc目录下自己使用到的一些配置
etc stand for "etcetera." 意思为附加物.等等.Linux的/etc目录下存放的是重要的系统配置 1. profile文件 在用户态写程序时,如果出现段错误 ...
- linux svn同步到本地目录,LINUX中SVN服务的搭建与实现SVN 自动同步到web目录,SVN自动启动...
一,下载相关软件: [root@localhost test]# wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz ...
- linux打补丁要选择目录,Linux下patch打补丁命令实例详解
linux下patch命令使用详解---linux打补丁命令 功能说明: 修补文件. 语 法: patch [-bceEflnNRstTuvZ][-B ][-d ][-D ][-F ][-g ][-i ...
- linux解压zip覆盖目录,linux下压缩与解压(zip、unzip、tar)详解
最近经常在linux上进行打包压缩解压,从网上收集整理并结合自己的常用的,跟大家分享一下下,废话不多说,进入正题. 1.zip 压缩 如果是直接压缩几个文件,那就可以直接使用命令 zip newfil ...
- linux path环境变量检索目录,Linux下动态链接库加载路径及搜索路径问题
引子 近日,服务器迁移后,偷懒未重新编译nginx的,直接./nginx启动,结果遇到如下问题: "error while loading shared libraries" 这是 ...
- linux使用设备文件的目录,Linux系统下的/dev目录
dev是设备(device)的英文缩写./dev这个目录对所有的用户都十分重要.下面学习啦小编给大家分享详解Linux系统下的/dev目录,欢迎阅读: 详解Linux系统下的/dev目录: 在这个目录 ...
最新文章
- 【VS实践】代码调试与错误处理
- NutzWk 5.2.4 发布,Java 微服务分布式开发框架
- OJ问题检测程序---python开发
- js 获取 屏幕 可用高度...
- 2016 排行前20 的编程语言
- Winform Echarts 显示百度地图的用法(3)
- php由哪几部分组成,微型计算机通常是由哪几部分组成?
- windows进程间通信
- 微信小程序picker中的rang 和rang-key
- 软件工程之软件概要设计
- 插件对计算机的运行有什么影响吗,电脑插件太多导致电脑运行缓慢怎么办 - 驱动管家...
- VS2008中关于“加载安装组件时遇到问题。取消安装”的解决办法
- PS使模糊图片变清晰
- Neural Approaches to Conversational AI
- vue3中 provide 和 inject 用法
- shiro学习之错误 No realms have been configured! One or more realms must be present to execute an authori
- jmeter报错 com/amazonaws/auth/AWSCredentials
- java基于ssm开发的弹幕视频网站源码
- 快速对齐word目录页码
- 什么是CUDA与CUDNN
热门文章
- 卸载WPS后,原office出现各种问题,报错,图标混乱
- 用 Python 分析了所有微信好友,发现了一个秘密...
- SPA(单页面应用)
- 刘强东与章泽天共同成立新公司:分别持股99%、1%
- Unity游戏开发时注意事项和难点
- 金山小火车【转自官网】(如果错误,请留言)
- 一个小时学会MySQL数据库
- MTK 按键驱动流程总结
- CSS中的表格2️⃣之合并/拆分单元格以及单元格中在存放表格(跨行或者跨列)
- html单元格上下拆分代码,在HTML / CSS中如何垂直拆分表格单元格(特殊版本)