Regex 删除部分文件名

Regex 删除部分文件名,regex,linux,bash,redhat,file-rename,Regex,Linux,Bash,Redhat,File Rename,我有一堆这样的文件: string.replace("(.+\\.txt)(.+)", "$1") file123.txt.452 文件456.txt.098 文件789.txt.078 如何从文件名中删除第二个点和末尾的数字 我尝试使用重命名,但我认为我的正则表达式不正确: rename 's/txt.*/txt/' * 尝试这样的正则表达式: string.replace("(.+\\.txt)(.+)", "$1") 比如: for f in *.txt.*; do g=$

我有一堆这样的文件:

string.replace("(.+\\.txt)(.+)", "$1")
file123.txt.452
文件456.txt.098
文件789.txt.078
如何从文件名中删除第二个点和末尾的数字

我尝试使用
重命名
,但我认为我的正则表达式不正确:

rename 's/txt.*/txt/' *
尝试这样的正则表达式:

string.replace("(.+\\.txt)(.+)", "$1")
比如:

for f in *.txt.*; do
    g=${f%.txt.*}.txt
    mv $f $g
done

尝试重命名's/txt\..+/txt/'*

\。
表示文字点,
+
表示其后的任何内容

命令的实际名称。它可以是
重命名
文件重命名
perl重命名
或其他。上述代码使用的
rename
命令在其
man
条目中有以下内容:

名称
重命名-重命名多个文件
提要
重命名[-bfilnv][-B前缀][-S后缀][-V方法][-Y前缀][-z后缀]
[--backup][--basename prefix=prefix][--dry run][--force][--help][--no stdin]
[--交互式][--仅打印][--仅链接][--前缀=前缀][--后缀=后缀]
[--verbose][--version control=method][--version]perlexpr[files]。。。
描述
重命名根据指定为第一个文件名的规则重命名提供的文件名
论点该参数是一个Perl表达式,预期将修改$字符串
对于至少部分指定的文件名。如果给定的文件名未被修改
该表达式将不会被重命名。如果命令中未给出任何文件名
第行,文件名将通过标准输入读取。

顺便提一下,由于这个问题,我今天已经了解了
重命名
命令的存在和用法。这可能对我也有用…我试过那个正则表达式,但也没用。也许我的语法错了,这很奇怪。我用这些文件名(“file123.txt.456”)尝试了与您的示例完全相同的方法,并应用了该命令,它工作得非常好……可能是perl没有正确安装在我的机器上。重命名是perl包的一部分。它使用的是哪种编程语言?请确保它也能在航站楼工作