微子网络与大家分享了在Linux shell中使用sed批量更改文件名的方法。希望你看完这篇文章有所收获。大家一起讨论一下。

示例

去除特定字符

目标:把2017-01-01.jpg和2018-01-01.jpg变成20170101.jpg和20180101.jpg

方法:用空值替换全部

for filein ` ls | grep . jpg ` s

newfile=`echo$file|sed的/-//g ' `

mv$file$newfile

在此完成,sed用于替换标准输出的字符串,其一般格式如下:

Stdout|sed的/pattern/replace/'在上面的示例中,在末尾添加了G以替换所有匹配项,而不仅仅是第一个匹配项。

中间插入字符

目标:把book-01.txt和纸-02.txt改成book-01 . txt和纸-02.txt。

方法:利用组匹配获取待插入位置两侧的字符串,然后用反向引用替换

for filein ` ls | grep . txt ` s

newfile=`echo$file|sed的/\([a-z]\ \)\([0-9]\ \)/\1-\2/' '

mv$file$newfile

完成分析

在上面的例子中,要重命名的文件列表是通过ls和grep命令获得的,然后用sed命令替换字符串,最后用mv命令更改文件名。

有很多方法可以得到要重命名的文件列表,比如find命令或者直接字符串,后面会提到。

注意ls | grep。for循环后的txt。该命令包含在两个反单引号中,其功能与$(ls | grep)相同。txt)。封闭的字符串将作为命令执行,然后返回字符串结果。

文件名包含空格的解决方法

我们可以将文件列表直接写入for循环,而不是通过命令获取,例如:

对于文件“文件1文件2文件3”

.

Done可以看到for循环按空格拆分字符串,所以如果要更改的文件名包含空格,就会被拆分成多个文件名,导致错误。

为了解决这个问题,我们可以将IFS(内部字段分隔符)设置为一个新的行字符\n,这样for循环就会逐行获取变量的值,保证每次都得到一个完整的文件名。

设置IFS变量的命令需要放在for循环之前:

IFS=$'\n '

forfilein`ls

.

完成也可以直接使用while read命令一次读取一行到变量文件中:

ls|grep'*。txt“| while readfile”

.

完成使用 find 获取文件列表

在前面的例子中,我们使用ls命令来获取文件列表。这个命令只能获取某个目录的文件,不能按多个条件过滤。

说到文件搜索,不得不提功能强大的find命令。该命令可以在多级目录中查找文件,并可以设置创建时间、文件大小、所有者等各种条件。查找文件特别方便灵活。

使用find命令获取文件列表,然后使用sed命令用正则表达式修改文件名。这两个命令的组合可以完成几乎所有常见的批量重命名任务。

例如,所有大于1M且后缀为txt或jpg的文件都从book_20170101.txt和image_20170101.jpg格式的文件重命名为20170101-book.txt和20170101-image.jpg,代码如下:

forfilein`find。-大小1M-名称' *_*。txt'-o-name'*_*。jpg ' ` s

newfile=`echo$file|sed的/\([a-z]\ \)_\([0-9]\ \)。/\2-\1./'`

mv$file$newfile

读完这篇文章,done相信你已经对Linux shell中使用sed批量更改文件名的方法有了一定的了解。如果您想了解更多相关知识,请关注微子网络,感谢您的阅读!

linux sed名宁,Linux shell利用sed批量更改文件名的方法相关推荐

  1. python 修改文件名_【学习分享】利用python批量修改文件名

    1 前言 分享一个利用python批量修改文件名的方法,我们以前分享过用DOS命令来批量修改文件名,但是如果要修改多个文件夹内的文件名,用DOS命令就不好处理了,我们就来分享一下如何用python处理 ...

  2. linux 批量更换文件名,Linux下批量修改文件名的方法

    Linux下批量修改文件名的方法 在Linux环境下修改文件名可以有不同的命令方式,比如rename.mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批量修改 ...

  3. Linux批量更改文件名——Bash/Csh

    文章目录 前言 一.单个文件 二.Bash脚本 三.Bash命令行 四.Csh 总结 前言 本文旨在纪录在liunx环境下如何批量更改文件名. 本文所有的例子都是为了检测出当前路径下的所有后缀是&qu ...

  4. 如何利用VBA批量更改Excel文件的内容

    心得(5):利用VBA批量更改Excel文件的内容 问题:因为接受的所有Excel文件都是相同格式的,但是有个单元格的内容就是需要,主办方来更改,如下所示: 获奖级别,得由主办方来更改,但是如果一个一 ...

  5. linux创建文件内容三行,shell之创建文件及内容的方法示例

    shell之创建文件夹: [root@vbox-nginx shell_command]# vi ./mkdir.sh #!/bin/sh parentDir="/media/sf_Proj ...

  6. linux 批量更改文件名后缀,批量修改文件名及扩展名

    1.变量基础知识 ${var}        变量var的值, 与$var相同 ${var-DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} ...

  7. linux+批量更改文件名后缀,Linux批量更改文件后缀名

    Linux下批量修改文件名 rename  的一种用法. 一:问题的提出 比如我的/home/cyq/cyq  有 m.php;1    n.php;1   俩个文件,怎么将文件名的 ;1    去掉 ...

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

    想把一部分文件加上日期序.也就是在文件名称前加上当前的年月日进行输出. 获取日期格式如下 Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ date ...

  9. shell脚本:批量修改文件名(文件名中添加字符)

    举例如下:批量创建10个随机字符串的文件,要求每个文件名后面添加_aaa,后缀名不变: [root@localhost goodboy]# ls adddbbdedf.html  baacjaiija ...

最新文章

  1. ListView的高级使用
  2. python爬虫设置下拉框的值_python爬虫:BeautifulSoup 使用select方法的使用
  3. 使用PaupGUI软件合并一致性树consensus tree
  4. 区块链 简单实现介绍
  5. python【力扣LeetCode算法题库】面试题 01.07- 旋转矩阵
  6. uglify压缩angular控制器注意
  7. 深度学习下的点击率预测:交互与建模
  8. 以后再也不去字节面试了…
  9. 如何处理Angular项目在Visual Studio Code打开报关于@Decorators的警告信息
  10. 陈天艺1636050045假设跑步者1小时40分钟35秒跑了24英里。编写一个程序显示每小时以公里为单位的平均速度值...
  11. 如何隐藏运行 winform 程序?
  12. linux下使用free命令查看实际内存占用(可用内存)
  13. docker cp :用于容器与主机之间的数据拷贝
  14. Less的条件表达式Guards
  15. linux进程(线程间)间通信-eventfd
  16. NV12图像格式叠加(水印原理演示)
  17. SPSS26没有典型相关性分析怎么办
  18. 计算机怎么格式化电脑吗,怎么格式化电脑
  19. 【dp】【斜率优化】土地购买
  20. python k线形态识别_K线形态及识别要点大全

热门文章

  1. linux使用设备文件的目录,Linux系统下的/dev目录
  2. html5 拍照 清晰度,html5强大的功能(一)
  3. matlab计算频域动态性能指标,基于MATLAB自动控制系统时域频域分析与仿真.doc
  4. php 将多个数组 相同的键重组,PHP – 合并两个类似于array_combine但具有重复键的数组...
  5. 生命银行怎么样_减脂就像是从“脂肪银行”中提款,想要成功,你要做到这两点...
  6. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图
  7. axure原件 总是丢失_Axure实现提示文本单击显示后自动消失的效果
  8. matlab中 %s 是什么意思,ie在matlab中是什么意思
  9. 关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题
  10. Python、C++ lambda 表达式