首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rename命令不计算表达式

Rename命令不计算表达式
EN

Stack Overflow用户
提问于 2019-08-28 23:41:13
回答 2查看 45关注 0票数 0

我的unix机器中有以下文件:

代码语言:javascript
运行
复制
CB_CB13_B01_20190502.txt 

CB_CB13_B01_20190503.txt.1

CB_CB13_B01_20190504.txt.2 

CB_CB13_B01_20190505.txt.3

CB_CB13_B01_20190506.txt.a 

CB_CB13_B01_20190507.txt.b

诸若此类

我正在尝试使用.txt命令删除重命名后的所有字符:

代码语言:javascript
运行
复制
rename "txt.*" ".txt" *

当我在表达式中使用*时,重命名不起作用。你知道我做错了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2019-08-28 23:54:25

rename使用Perl Compatible Regular Expression进行替换,例如s/txt.*/txt/

所以,试试这个:

代码语言:javascript
运行
复制
rename 's/txt.*/txt/' *

注意:您可以使用-n开关来尝试,而不需要真正的重命名。

代码语言:javascript
运行
复制
$ rename -n 's/txt.*/txt/' *
> rename(B_CB13_B01_20190503.txt.1, B_CB13_B01_20190503.txt)
> rename(B_CB13_B01_20190504.txt.2, B_CB13_B01_20190504.txt)
> rename(B_CB13_B01_20190505.txt.3, B_CB13_B01_20190505.txt)
> rename(B_CB13_B01_20190506.txt.a, B_CB13_B01_20190506.txt)
> rename(B_CB13_B01_20190507.txt.b, B_CB13_B01_20190507.txt)
票数 2
EN

Stack Overflow用户

发布于 2019-08-29 03:37:49

@Yasen是对的:

测试:

代码语言:javascript
运行
复制
#!/bin/bash
rm -f something.txt
touch something.txt.2
echo "original contents:"
ls something*
rename --version
rename -v 's/txt.*/txt/' something*
echo "updated contents:"
ls something*

结果

代码语言:javascript
运行
复制
original contents:
something.txt.2
/usr/bin/rename using File::Rename version 0.20

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

https://stackoverflow.com/questions/57695971

复制
相关文章

相似问题

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