如何按 12 个序列重命名多年的批次文件?

How to rename batches of files in sequences of 12 for multiple years?

如果这个问题在其他地方以另一种方式被问到,我们深表歉意;我看过但找不到具体答案。

不管怎样,我想做的是:

我有一个文件夹,其中的文件按标题中的年份和月份顺序命名,即 Fetch_1961-01_Actual.txt、Fetch_1961-02_Actual.txt、...、Fetch_2002-12_Actual.txt.

我想做的是重命名它们,以便使用简单的逐年索引来命名它们,即 01.1961.txt、02.1961.txt、...、12。 2002.txt.

如有任何帮助,我们将不胜感激。

提前致谢。

格雷格

PS。我已经设法使用 R 中的以下代码对其进行了排序:

mypath <- "path/to/files"
a <- list.files(path = mypath)
mn <- 1:12
yr <- sort(rep(1961:2002, 12))
for (i in yr) {
    b <- paste(rep(mn, 2002-1961), ".", yr, ".txt", sep = "")
}
file.rename(a,b)

不是很优雅,但它节省了我几个小时。

干杯

这是我会做的:

  1. 使用sed为每个文件制作mv命令
  2. sed 输出保存到文件
  3. 运行 该文件中的命令,您的文件将被重命名。

假设您的文件都与您的示例一样命名,此命令将生成您想要的内容:

ls | sed 's/Fetch_\([0-9]*\)-\([0-9]*\)_Actual.txt/mv & ..txt/'

运行 文件夹中的文件要重命名并确保输出看起来不错。如果是,请将其保存到文件中:

ls | sed 's/Fetch_\([0-9]*\)-\([0-9]*\)_Actual.txt/mv & ..txt/' > commandList

然后(一旦你仔细检查 commandList 文件在文本编辑器中看起来是正确的)运行 你刚刚创建的 commandList 文件:

bash commandList

希望对您有所帮助!