Files
如何通過更改文件名的一個組成部分來重命名多個文件?
我發現了很多關於如何使用命令行重命名多個文件的問題。但是我無法解決重命名此文件名的具體問題:
something_4M_something_something_manyothersomethings.csv
進入這個:
something_4_M_something_something_manyothersomethings.csv
我需要的是將
4M
欄位拆分為4_M
但我無法做到(注意:每件事都用下劃線分隔,還有很多其他欄位,我相信這對任務並不重要)。我所做的是以下,但它不像我預期的那樣工作我認為這是正則表達式的問題,但我想不出一個更好的:
rename -n 's/.4M/$&_4_M/' *
另外,我不知道我寫的東西到底是如何工作的,因為我在與類似問題之一的評論中發現了類似的東西,但我再也找不到了。
如果您真正想做的只是替換
4M
為4_M
,那麼您的正則表達式的變體會這樣做:$ ls something_4M_something_something_manyothersomethings.csv $ rename -n 's/4M/4_M/' * 'something_4M_something_something_manyothersomethings.csv' would be renamed to 'something_4_M_something_something_manyothersomethings.csv'
正則表達式適用於名稱中的任何內容**,**因此您無需執行特定操作來保持領先的“某事”。
如果您想做其他事情,例如將第一個“某事”移動到第二個“某事”,或限制為
4M
下劃線後的第一次出現,請編輯您的問題並澄清。正如評論中所觀察到的那樣,
-n
進行了試執行,因此它顯示了會發生什麼,並且實際上並沒有執行操作。由於問題中的範例已經在使用
-n
,因此我假設提問的人理解了這一點。