我有一个两部分的问题。
我有一系列名为“file.pdb.#”的文件,其中# 是一个整数。
1.) 如何编写脚本将所有“file.pdb.#”重命名为“file_#.pdb”,其中保留整数?所有文件都在同一目录中。
我大概需要读入常量字符串(file.pdb.),变量是#。
2.) 更重要的是,我将如何在已回答的问题中正确搜索此答案?我毫不怀疑这个问题以前已经回答过很多次了。但是,我不确定我如何正确搜索这个问题的答案(显然我应该学会更好地搜索以前回答过的问题,以免将来打扰别人)。我无法想象正确的搜索字符串是什么(谷歌搜索如何在 Linux 中读取文件并重命名它们是非常通用的,我涉足了与此类文件格式操作无关的建议)。
您可以使用捕获组和反向引用,例如
rename -vn -- 's/\.(pdb)\.(\d+)/_$2.$1/' *.pdb.*
Run Code Online (Sandbox Code Playgroud)
以匹配文字期间\.,接着(文字)串pdb,接着是第二期\.,然后一个或多个数字的序列\d+,复制字符串和数字序列插入编号捕捉组$1和$2分别,然后用再代它们以相反的顺序下划线代替第一个句点。
选项-v和-n用于详细输出(列出所做的任何更改)和无操作,允许您在进行任何实际替换之前测试正确性:您需要删除n选项以实际应用更改。
该--标记的命令选项的结束-这只是使命令更稳健在极少数情况下,你有一个连字符开头的文件名。
在包含文件file.pdb.1 file.pdb.2 file.pdb.3 file.pdb.4 file.pdb.5(以及其他文件)的目录中对其进行测试:
$ rename -vn -- 's/\.(pdb)\.(\d+)/_$2.$1/' *.pdb.*
file.pdb.1 renamed as file_1.pdb
file.pdb.2 renamed as file_2.pdb
file.pdb.3 renamed as file_3.pdb
file.pdb.4 renamed as file_4.pdb
file.pdb.5 renamed as file_5.pdb
Run Code Online (Sandbox Code Playgroud)