我有rename -v 's/\.jpg$/\_120x120.jpg/' *.jpg
文件重命名正則表達式增加不必要的後綴
zzr31_120x120.jpg
問題更名爲zzr31_120x120_120x120.jpg
我怎樣才能使它更清楚,它只會重命名這些沒有120х120? 最重要的是,如果可能的話,在一個命令中不僅可以使用jpg
,還可以使用gif
和png
?
我有rename -v 's/\.jpg$/\_120x120.jpg/' *.jpg
文件重命名正則表達式增加不必要的後綴
zzr31_120x120.jpg
問題更名爲zzr31_120x120_120x120.jpg
我怎樣才能使它更清楚,它只會重命名這些沒有120х120? 最重要的是,如果可能的話,在一個命令中不僅可以使用jpg
,還可以使用gif
和png
?
你需要使用negative lookahead和使用正則表達式來匹配您的選擇擴展,使得重命名考慮每個文件只有*
所以,無論如何,這是我的建議
rename -n 's/^((?:(?!_120x120).)*)\.(jpg|png|gif)$/$1_120x120.$2/' *
刪除-n使其功能,否則它只會顯示它將重命名的內容,實際上不會重命名
您需要使用一些名爲negative look-behind assertions
;請查閱perlre(1)
文檔瞭解完整的詳細信息。我無法想出確切的語法使用,這是我最後的努力:
/(.*)\K120x120\.(jpg|gif|png)/$1_120x120.$2/
更簡單的答案是先搬開「好」的文件:
mkdir foo
mv *_120x120.* foo
rename -v 's/\.jpg$/\_120x120.jpg/' *.jpg
mv foo/* .
rmdir foo
謝謝你做了伎倆^^ – fob