需要 Linux 中重命名命令的幫助

需要 Linux 中重命名命令的幫助

我有幾個具有這些名稱的檔案:

file1, A.ext  
file1, The.ext  

我需要將名稱更改為

A file1.ext  
The file1.ext

也就是說,我需要將文章從最後移到開頭,刪除逗號。我該怎麼做呢?

我研究過 rename 命令,但我沒有使用 perl regex 的經驗,我想出了這個荒謬的命令,但它不起作用,我離開它是為了顯示我的絕望:

rename 's/(?<=[A-Z a-z \s]*),\sA//' *

答案1

您需要:

rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
  • ^([^,]*),會匹配逗號之外的所有內容,直到從檔案名稱的開頭看到第一個逗號為止。

  • \s*(.*)\.ext$匹配零個或多個空格,後跟任何內容並以 結尾.ext

  • 和分別$2是對 和的$1反向引用。(.*)([^,]*)

將重命名如下:

rename(a single file,.ext,  a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)

P,s:刪除-n以對用於測試的檔案進行重新命名。

相關內容