做网站准备什么问题,东莞阳光网英语口语大赛,广告设计图片赏析,wordpress 收费下载系统微子网络与大家分享了在Linux shell中使用sed批量更改文件名的方法。希望你看完这篇文章有所收获。大家一起讨论一下。示例去除特定字符目标#xff1a;把2017-01-01.jpg和2018-01-01.jpg变成20170101.jpg和20180101.jpg方法#xff1a;用空值替换全部for filein ls | grep …微子网络与大家分享了在Linux shell中使用sed批量更改文件名的方法。希望你看完这篇文章有所收获。大家一起讨论一下。示例去除特定字符目标把2017-01-01.jpg和2018-01-01.jpg变成20170101.jpg和20180101.jpg方法用空值替换全部for filein ls | grep . jpg s做newfileecho$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做newfileecho$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 forfileinls做.完成也可以直接使用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代码如下forfileinfind。-大小1M-名称 *_*。txt-o-name*_*。jpg s做newfileecho$file|sed的/\([a-z]\ \)_\([0-9]\ \)。/\2-\1./mv$file$newfile读完这篇文章done相信你已经对Linux shell中使用sed批量更改文件名的方法有了一定的了解。如果您想了解更多相关知识请关注微子网络感谢您的阅读