Files

如何通過更改文件名的一個組成部分來重命名多個文件?

  • November 8, 2021

我發現了很多關於如何使用命令行重命名多個文件的問題。但是我無法解決重命名此文件名的具體問題:

something_4M_something_something_manyothersomethings.csv

進入這個:

something_4_M_something_something_manyothersomethings.csv

我需要的是將4M欄位拆分為4_M但我無法做到(注意:每件事都下劃線分隔,還有很多其他欄位,我相信這對任務並不重要)。

我所做的是以下,但它不像我預期的那樣工作我認為這是正則表達式的問題,但我想不出一個更好的:

rename -n 's/.4M/$&_4_M/' *

另外,我不知道我寫的東西到底是如何工作的,因為我在與類似問題之一的評論中發現了類似的東西,但我再也找不到了。

如果您真正想做的只是替換4M4_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,因此我假設提問的人理解了這一點。

引用自:https://unix.stackexchange.com/questions/673679