[英]bash rename using regex array substitution
我對此職位有一個非常相似的問題。
我想知道如何使用指定的替換來重命名文件名中的出現。 例如,如果原始文件名為:“ the quick brown quick brown fox.avi”,我想將其重命名為“ slow red slow red fox.avi”。
我嘗試了這個:
new="(quick=>'slow',brown=>'red')"
regex="quick|brown"
rename -v "s/($regex)/$new{$1}/g" *
但沒有愛:(
我也嘗試過
regex="qr/quick|brown/"
但這只會帶來錯誤。 知道我在做什么錯嗎?
根據您的示例,我認為您需要多個替換項(不僅僅是將“快速棕色”轉換為“慢紅色”,而是將單詞列表轉換為新單詞列表。您可以使用分號分隔替換項。這是一種解決方案適用於您的示例:
rename -v 's/quick/slow/g;s/brown/red/g' *
而且,如果您真的想使用數組將舊字符串映射到新字符串,則可以將更多Perl塞入參數以進行重命名(但有時您可能只是將Perl腳本編寫為獨立腳本) ):
rename -v '%::new=(quick=>"slow",brown=>"red");s/(quick|brown)/$::new{$1}/g' *
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.