zoukankan      html  css  js  c++  java
  • 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从右边算起的最后一个'/'字符及其右边的内容,返回从右边算起的最后一个'/'(不含该字符。

     例子如图:

    ${}总结

    其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的'/'或'.'。也就是说,上面的使用方法只是它使用的一个特例。

    看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。
    #:表示从左边算起第一个
    %:表示从右边算起第一个
    ##:表示从左边算起最后一个
    %%:表示从右边算起最后一个
    换句话来说,#总是表示左边算起,%总是表示右边算起。

    *:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的'/'和'.')的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的'/'和'.')的右边,表示删除指定字符及其右边的内容。这里的'*'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

    例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。
     

    --------------------- 本文来自 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  原名  替换名  要改的文件 

    原字符串:将文件名需要替换的字符串; 目标字符串:将文件名中含有的原字符替换成目标字符串; 文件:指定要改变文件名的文件列表。

  • 相关阅读:
    Restful 的概念预览
    Bootstrap中alerts的用法
    Bootstrap HTML编码规范总结
    Bootstrap中img-circle glyphicon及js引入加载更快的存放位置
    PI数据库
    memcached
    Bootstrap中样式Jumbotron,row, table的实例应用
    js事件监听
    jquery显示隐藏操作
    HDU4521+线段树+dp
  • 原文地址:https://www.cnblogs.com/xiaomai333/p/9760304.html
Copyright © 2011-2022 走看看