我知道如何使用 for 循环等重命名多个文件,但我想知道是否有一种方法可以使用一个 mv 命令重命名两个文件,同时保持某些字符串一致?
例如,如果我有两个文件,我只想重命名其中的一部分:
txt_ID12123_R1_001_jan.txt
txt_ID12123_R2_001_jan.txt
我要做的就是重命名“txt”,但保持其他字符串组件不变:
exam_R1_001.txt
exam_R2_001.txt
有没有一行代码可以使用正则表达式来保持某些变量的一致性?保留 R1 和 R2 字符串非常重要。我尝试了以下变体:
mv txt_1D12123_R[1,2]_001_jan.txt exam_R[1,2]_001.txt
但这显然行不通。基本上,除了 R1 和 R2 之外,整个文件名都是一样的,所以我想保持这些字符串不变,并相应地重命名。我也试过 {1,2},但花括号没有任何区别。只是想知道 - 我只需要偶尔这样做,所以为两个文件编写一个循环似乎很愚蠢,写两次 mv 也没什么大不了的,但我想一定有一些捷径。
答案1
您可以使用 mmv 命令重命名文件
mmv '*txt_1D12123*' '#1exam#2'
您想在当前目录中的所有文件中将第一次出现的 abc 替换为 xyz 请注意,在上面的例子中,我将模式括在单引号中。
答案2
安装rename
包裹,
sudo apt install rename
那么就很简单了(当然,如果你熟悉 perl 的话):
rename 's/.*(_R[12]_\d+).*/exam${1}.txt/' txt*.txt