2017-10-29 189 views
0

我有这个文件的名字如何一个字之前删除文件名中的数字

DBO-101ar_thumb657.jpg门27ar_thumb641.jpg以及ISHq-283ar_thumb639.jpg KSM-365ar_thumb599.jpg pkyek-302_thumb604.jpg pun- 68ar_thumb694.jpg

我想要做的就是拇指

所以一定是这样的

DBO-101ar_thumb.jpg门27ar_thumb.jpg以及ISHq-283ar_thumb.jpg后取出数KSM-365ar_thu mb.jpg pkyek-302_thumb.jpg pun-68ar_thumb.jpg

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

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

没有工作[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 test]#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]# –

+0

它正在打印像你问的文件(没有数字),似乎你想重命名文件的权利? – nbari

0

查找thumb后跟0个或多个数字,并与thumb更换。

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

或者只有当你至少有1位(在这种情况下,相同的结果)替换:什么是你想到目前为止目前关于它的研究

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

没有工作:( –

相关问题