0

このような画像が約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

このように読めるように、最初のダッシュ後のすべての文字を取り除く必要があります

101018.jpg
100116.jpg
1000748.jpg
100138.jpg
100308.jpg
100463.jpg
100523.jpg

これは正規表現で実行できることは知っていますが、どこから始めればよいかわかりません。

このトピックについてもっと学ぶために、この正規表現サイトで忙しく働いています。

ありがとうございました。

編集:申し訳ありませんが、他のより多様な例をいくつか追加しませんでした。

4

3 に答える 3

0

シェルと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ため、反復ごとに 1 つのファイルが 必要です。echo $i | sed -r 's/([0-9]*)\-.*\.jpg/\1.jpg/g'

于 2012-10-31T15:17:15.310 に答える
0

101018 のキャプチャの名前を変更し、使用したファイルの名前を変更できます。NEW (デモ)

OLD (デモ)

(\d+)[\w-]+\.jpg

編集: 2 番目のオプションは、「-」で分割し、最初のパラメーターを取得することです。

于 2012-10-30T11:27:18.220 に答える
0

PowerShell の場合:

$_ -replace '-.*(?=\.\w+$)'

例えば

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しかない場合、または常にハイフンマイナスとドットの間の部分である場合は、正規表現を少し単純化できます。

-[^.]+
于 2012-10-30T11:27:26.807 に答える