我有这个文件名
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中使用什么命令???
答案 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替换之前解释过的数字。
如果您希望cp
或mv
这些文件可以使用以下内容:
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'