重命名我有很多的文件看起來像這樣:與模式
"THIS IS my file.txt"
"THIS IS My file.txt"
"THIS IS m file.txt"
"THIS IS M file.txt"
所以基本上,如果我嘗試來形容它,文件名由兩個部分組成,一個是大寫,其他較低情況(儘管第二部分的第一個字母也可以是大寫)。單詞可以由一個字符組成。當有選擇時,大寫的單個字符詞被認爲是第一部分。
我想提取由大寫字母組成的文件名的第一部分,將它們改爲小寫字母(只用第一個字母作爲大寫字母),然後用連字符將其與其餘字母分開。
所以我期待的結果是:
"This Is - my file.txt"
"This Is - My file.txt"
"This Is - m file.txt"
"This Is M - file.txt"
我至今是:
rename 's/^(([A-Z]{2,}|)+)(.*)/\u\L$1\E - $3/g' *
但也有相當與它(的幾個問題一個字母大寫單詞不要不匹配,只有第一個字被大寫)。
這不是如何Perl'rename'函數起作用。根據[doc](http://perldoc.perl.org/functions/rename.html)重命名需要兩個參數,_oldname _,_ newname_。你有兩個問題需要解決:1)找出分裂發生的位置; 2)改變大小寫並插入連字符。我建議你分開處理它們以開始。 –
@JimGarrison我懷疑他在說linux中的'rename'命令行工具。 – TLP
對不起,我沒有使用perl的重命名功能,而是使用linux中的重命名工具。根據它的手冊頁,它使用perl regex。是的,我的第一個問題是如何使用正則表達式模式匹配來區分它們,但我沒有如上面所說的那樣對一個字母單詞進行分類。 – Simhor