【问题标题】:how to remove the numbers before a word on files names如何删除文件名单词前的数字
【发布时间】:2018-04-10 07:11:08
【问题描述】:

我有这个文件名

dbo-101ar_thumb657.jpg door-27ar_thumb641.jpg ishq-283ar_thumb639.jpg ksm-365ar_thumb599.jpg pkyek-302_thumb604.jpg pun-68ar_thumb694.jpg

我要做的是删除拇指后的数字

一定是这样的

dbo-101ar_thumb.jpg door-27ar_thumb.jpg ishq-283ar_thumb.jpg ksm-365ar_thumb.jpg pkyek-302_thumb.jpg pun-68ar_thumb.jpg

我应该在 centos 7 中使用什么命令???

【问题讨论】:

  • 你目前正在尝试什么研究到目前为止,谷歌它并返回一些显示努力的东西

标签: unix centos rename


【解决方案1】:

查找 thumb 后跟 0 个或多个数字并将其替换为 thumb

sed 's/thumb[0-9]*/thumb/g'

或仅在您至少有 1 个数字时替换(在这种情况下结果相同):

sed 's/thumb[0-9]\+/thumb/g'

【讨论】:

    【解决方案2】:

    你可以试试这个:

    for f in *; do 
    echo $f | sed 's#[0-9]*\.#\.#g'
    done
    

    将输出:

    dbo-101ar_thumb.jpg
    door-27ar_thumb.jpg
    ishq-283ar_thumb.jpg
    ksm-365ar_thumb.jpg
    pkyek-302_thumb.jpg
    pun-68ar_thumb.jpg
    

    如果将读取当前目录中的所有文件,稍后使用sed 's#[0-9]*\.#\.#g' 它将替换以“。”结尾的数字。用“。”

    您也可以使用 find 对您的输入进行预过滤,如下所示:

    find . -iname "*thumb*.jpg" -exec sh -c "echo {} | sed 's#[0-9]*\.#\.#g'" \;
    

    它将匹配具有此模式 *thumb*.jpg 的任何文件,然后使用 sed 替换前面解释的数字。

    如果你想cpmv 文件,你可以使用类似的东西:

    find . -iname "*thumb*.jpg" -exec sh -c 'x=`echo {} | sed "s#[0-9]*\.#\.#g"`; mv {} $x' \;
    

    【讨论】:

    • 没有用 [root@s1 test]# find . -iname "thumb.jpg" -exec sh -c "echo {} | sed 's#[0-9]*\.#\.#g'" \; ./dbo-101ar_thumb.jpg ./ksm-365ar_thumb.jpg ./pun-68ar_thumb.jpg ./door-27ar_thumb.jpg ./pkyek-302_thumb.jpg ./ishq-283ar_thumb.jpg [root@s1 测试]# ls dbo-101ar_thumb657.jpg door-27ar_thumb641.jpg ishq-283ar_thumb639.jpg ksm-365ar_thumb599.jpg pkyek-302_thumb604.jpg pun-68ar_thumb694.jpg [root@s1 test]#
    • 它正在按照您的要求打印文件(没有数字),您似乎想重命名文件吧?
    猜你喜欢
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2011-11-15
    • 2015-02-13
    相关资源
    最近更新 更多