需要 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以对用于测试的文件进行重命名。

相关内容