如何按 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)
不是很优雅,但它节省了我几个小时。
干杯
这是我会做的:
- 使用
sed
为每个文件制作mv
命令
- 将
sed
输出保存到文件
- 运行 该文件中的命令,您的文件将被重命名。
假设您的文件都与您的示例一样命名,此命令将生成您想要的内容:
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
希望对您有所帮助!
如果这个问题在其他地方以另一种方式被问到,我们深表歉意;我看过但找不到具体答案。
不管怎样,我想做的是:
我有一个文件夹,其中的文件按标题中的年份和月份顺序命名,即 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)
不是很优雅,但它节省了我几个小时。
干杯
这是我会做的:
- 使用
sed
为每个文件制作mv
命令 - 将
sed
输出保存到文件 - 运行 该文件中的命令,您的文件将被重命名。
假设您的文件都与您的示例一样命名,此命令将生成您想要的内容:
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
希望对您有所帮助!