【问题标题】:Rename part of filename using regex使用正则表达式重命名文件名的一部分
【发布时间】:2019-01-29 15:31:27
【问题描述】:

我有一堆文件,其中方括号中有附加信息。我想通过删除该部分来重命名它们。

例如:

filename [additional info 1].ext1
anotherfile [different info 2].ext2

想重命名为:

filename.ext1
anotherfile.ext2

我尝试使用正则表达式(并使用重命名命令)但没有成功。有谁知道只有“[....]”部分(包括前导空格)的重命名命令条的方法。

【问题讨论】:

标签: regex linux bash rename


【解决方案1】:

循环每个文件并使用 sed 进行一些简单的正则表达式匹配:

for i in *.ext*; do 
    mv "$i" "$(sed 's/ \[[^]]*\]\././' <<<"$i")"
done

测试:

$ touch 'filename [additional info 1].ext1' 'filename [additional info 2].ext2'
$ for i in *.ext*; do mv -v "$i" "$(sed 's/ \[[^]]*\]\././' <<<"$i")"; done
renamed 'filename [additional info 1].ext1' -> 'filename.ext1'
renamed 'filename [additional info 2].ext2' -> 'filename.ext2'

【讨论】:

  • 当我这样做时,我得到以下信息:mv: ‘filename [additional info 1].ext1’ and ‘filename [additional info 1].ext1’ are the same filemv: ‘anotherfile [different info 2].ext2’ and ‘anotherfile [different info 2].ext2’ are the same file
  • 纠正一个错字。已编辑。 ; )
猜你喜欢
  • 2011-09-14
  • 2017-08-10
  • 2018-08-22
  • 2011-04-28
  • 2019-06-12
  • 2011-01-06
  • 2015-06-06
  • 1970-01-01
相关资源
最近更新 更多