linux 批量修改文件名 文件名只保留部分,去掉部分
问题:linux系统中文件名包含中文,导致页面访问不了文件。就是上条博客中的解决方法二遗留问题。
文件名中有以下格式:TC2_诺而达铜管(中山)有限公司.pdf ,要改为TC2.pdf,去掉中文部分
1、先了解linux 获取文件名,截取字符串的方法:使用${}。原文地址:https://blog.csdn.net/fengmm521/article/details/78446475
1)${var##*/}
该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。
2)${var#*/}
该命令的作用是去掉变量var从左边算起的第一个'/'字符及其左边的内容,返回从左边算起第一个'/'(不含该字符)的右边部分的内容。
3)${var%/*}
该命令的使用是去掉变量var从右边算起的第一个'/'字符及其右边的内容,返回从右边算起的第一个'/'(不含该字符)的左边的内容
4)${var%%/*}
该命令的使用是去掉变量var从右边算起的最后一个'/'字符及其右边的内容,返回从右边算起的最后一个'/'(不含该字符。
例子如图:
${}总结
--------------------- 本文来自 woodcol 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fengmm521/article/details/78446475?utm_source=copy
2、批量修改文件名方法:
方法一:mv配合for循环方式进行修改
for name in `ls *.pdf`;do mv $name ${name%_*}.pdf;done
解释说明:‘ls *.pdf’是改目录下所有的pdf文件,mv 源文件名 替换文件名,${name%_*}:去掉文件名‘_’右边的字符串,留下左边的
方法二:sed命令
方法三:rename命令
rename命令用字符串替换的方式批量改变文件名。
格式:rename 原名 替换名 要改的文件
原字符串:将文件名需要替换的字符串; 目标字符串:将文件名中含有的原字符替换成目标字符串; 文件:指定要改变文件名的文件列表。