簡體   English   中英

bash使用正則表達式數組替換重命名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM