regex - 在linux中使用正则表达式重命名文件

标签 regex terminal rename

我有一组名为类似的文件

20151016_174721.jpg

我想将它们重命名为

2015-10-16 17.47.21.jpg

我尝试使用以下命令使用rename:

rename -n "s/(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2}).*$/$1-$2-$3 $4.$5.$6.jpg/" *.jpg

但它最终告诉我

20151016_174721.jpg renamed as -- ...jpg

我不明白为什么。

最佳答案

您可以使用:

rename 's/(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})(.*)$/$1-$2-$3 $4.$5.$6$7/' *.jpg

确保在模式中使用单引号以避免 shell 尝试扩展 $1$2 等。

关于regex - 在linux中使用正则表达式重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34859158/

相关文章:

mongodb - 如何在sh文件中执行mongo命令?

php - 通过集群和移动进行高效的文件更新

javascript - JavaScript 中输入 FileUpload 对象 : can’t change the name of the selected file

regex - jq 在第一个之后删除空格

c++ - 保存/序列化 boost 或 std 正则表达式

java - 比较 2 个正则表达式字符串

javascript - 检查字符串是否以范围内的数字开头

通过 Sublime Text 命令面板正确操作 CSV 文件输出的 C++ 代码...但不是在终端中

linux - 在 bash 中用另一个词替换一个词

Java:文件重命名检测