如何删除文件名上的单词之前的数字

时间:2017-10-29 01:28:34

标签: unix centos rename

我有这个文件名

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中使用什么命令???

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

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' \;

答案 1 :(得分:0)

查找thumb后跟0位或更多位数,并将其替换为thumb

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

或者只有当你有至少1位数时才会更换(在这种情况下是相同的结果):

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