【问题标题】:How to rename batches of files in sequences of 12 for multiple years?如何以 12 的顺序重命名批次文件多年?
【发布时间】:2015-03-09 00:46:46
【问题描述】:

如果这个问题已经在其他地方以其他方式提出,我们深表歉意;我看过但找不到具体的答案。

反正我想做的如下:

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

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

任何帮助将不胜感激。

提前致谢。

格雷格

附言。我已经设法使用 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)

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

干杯

【问题讨论】:

  • 如果您使用的是 Windows,您可以看到Rename multiple files in cmd的接受答案
  • 对不起,我是新手。我在 OS X Yosemite 中使用终端。我的坏!

标签: macos terminal sequence rename


【解决方案1】:

我会这样做:

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

假设你的文件和你的例子一样命名,这个命令会生成你想要的:

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

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

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

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

bash commandList

希望这会有所帮助!

【讨论】:

  • 干杯,就是这样。
猜你喜欢
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 2017-01-01
  • 2022-01-15
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
相关资源
最近更新 更多