
我有幾個具有這些名稱的檔案:
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
以對用於測試的檔案進行重新命名。