我有大约1400张这样的照片。
101018-202x300.jpg
100116-215x300.jpg
1000748-300x157.jpg
100138-196x300.jpg
100308-companion-in-surgical-studies-208x300.jpg
100463-Ambroise-Pare-300x216.jpg
100523-Grulee-collection-pediatrics-194x300.jpg
我需要删除 FIRST 短划线后的所有字符,以便它显示为
101018.jpg
100116.jpg
1000748.jpg
100138.jpg
100308.jpg
100463.jpg
100523.jpg
我知道这可以用正则表达式完成,但我不知道从哪里开始呢?
我很忙working through this Regex Site to learn more about the topic.
谢谢。
编辑:道歉,我没有添加其他更多变化的例子。
答案 0 :(得分:0)
答案 1 :(得分:0)
在PowerShell中:
$_ -replace '-.*(?=\.\w+$)'
e.g。
PS> -split'101018-202x300.jpg
>> 100116-215x300.jpg
>> 1000748-300x157.jpg
>> 100138-196x300.jpg' | %{ $_ -replace '-.*(?=\.\w+$)'}
>>
101018.jpg
100116.jpg
1000748.jpg
100138.jpg
如果您只有JPEG,或者它总是连字符和点之间的部分,您可以简化正则表达式:
-[^.]+
答案 2 :(得分:0)
使用shell和sed ..
for i in $(ls /path/to/your/images)
do
mv $i $(echo $i | sed -r 's/([0-9]\*)\-.*\.jpg/\1.jpg/g')
done
让我解释一下这会做什么。
for loop
将为每次迭代获取一个文件
echo $i | sed -r 's/([0-9]*)\-.*\.jpg/\1.jpg/g'
用于将文件名更改为所需的输出。