我有几个具有这些名称的文件:
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
以对用于测试的文件进行重命名。