regex - 在 bash 中使用正则表达式重命名文件
问题描述
我正在尝试使用正则表达式来重命名这篇文章之后的几个文件
有我的文件-
abcd_some_random_alphanumeric_1.pdf
abcd_some_random_alphanumeric_2.pdf
abcd_some_random_alphanumeric_3.pdf
abcd_some_random_alphanumeric_4.pdf
abcd_some_random_alphanumeric_5.pdf
我想将文件重命名为
abcd_1.pdf
abcd_2.pdf
abcd_3.pdf
abcd_4.pdf
abcd_5.pdf
我正在尝试以下
rename 's/abcd_.*_(/d+).pdf/abcd_${1}.pdf/' *.pdf
但我得到很多错误 -
Unknown regexp modifier "/a" at (user-supplied code), near ""
Unknown regexp modifier "/b" at (user-supplied code), near "{
#line 1
"
Unknown regexp modifier "/c" at (user-supplied code), near "{
#line 1
...........
"
但是,我最终想要 _1、_2、_3 等。我不知道如何使用正则表达式从原始字符串中捕获数据并将捕获的组放入替换部分。
解决方案
您的语法已关闭,正则表达式中的单个数字是\d
,带有反斜杠而不是正斜杠。扩展名中的点也.pdf
应该被转义。尝试这个:
rename 's/abcd_.*_(\d+)\.pdf/abcd_$1.pdf/' *.pdf
推荐阅读
- mysql - 仅当多于 n 行时才删除具有较低值的行
- android - com.android.tools.r8.errors.CompilationError:程序类型已存在:com.google.protobuf.AbstractMessageLite$Builder$LimitedInputStream
- react-native - 生成发布 APK
- java - 结合 Querydsl-jpa 和 querydsl-sql 和代码生成
- python-3.x - 使用 set_index() 更新 Pandas 系列/df
- java - 在检查然后取消选中复选框列表视图的复选框时从数组列表中删除元素
- python - 为什么 python 一直在 OSX Mojave 上寻找 2.7?
- json - 如何在 jquery 的分页上使用 ajax 和 JSON 更新 Bootstrap 数据
- greenplum - 从每个 id 的 date 中获取缺少的月份
- python - 下载后从 API URL 检索文件名,Python 3.6