首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:重命名文件并在括号和撇号中获取文本?

Regex:重命名文件并在括号和撇号中获取文本?
EN

Stack Overflow用户
提问于 2021-05-25 08:27:36
回答 2查看 30关注 0票数 0

我的文本/文件名看起来像这样:

代码语言:javascript
复制
['11'].pdf 
['2807'].pdf 
['511'].pdf
['445'].pdf 

我想要括号内的数字(没有撇号),并将文件重命名为例如445.pdf。

我目前使用:

代码语言:javascript
复制
 rename 's/(\[0-9].*pdf).*/$1/' *

但这不会改变任何内容;文件的名称是原来的名称。

EN

回答 2

Stack Overflow用户

发布于 2021-05-25 09:33:39

一些试验和错误导致了这个正则表达式:rename "s/\[\'([0-9]+)\'\]/\1/" *.pdf

我不清楚是什么原因,但是如果使用$1,正则表达式就会失败,如果使用\1,正则表达式就会成功--尽管当我运行它时,perl告诉我并非如此。

票数 1
EN

Stack Overflow用户

发布于 2021-05-25 09:49:29

这没有回答正则表达式的问题,但这里有另一个观点。

正则表达式讨论起来有点棘手。不同的正则表达式定义几乎和实现一样多。根据您的rename程序是用什么语言编写的,某人给您的正则表达式可能对您和他们的工作方式有所不同。在谈论您正在使用的regex实现时,您必须非常具体。

如果你只是想实际地做一堆重命名,那么完全避免使用正则表达式,只使用shell表达式:

代码语言:javascript
复制
for current in "["*.pdf; do
    new=${current##??}       # removes the ['
    new=${new%?].pdf}        # removes the '].pdf
    echo mv "$current" "$new.pdf"
done

(删除echo才能真正做到这一点。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67680276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档