我的unix机器中有以下文件:
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命令删除重命名后的所有字符:
rename "txt.*" ".txt" *当我在表达式中使用*时,重命名不起作用。你知道我做错了什么吗?
发布于 2019-08-28 23:54:25
rename使用Perl Compatible Regular Expression进行替换,例如s/txt.*/txt/
所以,试试这个:
rename 's/txt.*/txt/' *注意:您可以使用-n开关来尝试,而不需要真正的重命名。
$ 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)发布于 2019-08-29 03:37:49
@Yasen是对的:
测试:
#!/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*结果
original contents:
something.txt.2
/usr/bin/rename using File::Rename version 0.20
something.txt.2 renamed as something.txt
updated contents:
something.txthttps://stackoverflow.com/questions/57695971
复制相似问题