备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 生信技能树 如何批量给自己的文件重命名
2 0

海报分享

如何批量给自己的文件重命名

应用Windows日常办公,很多时候为了更快识别自己文件夹的文件,我们常需要对文件进行重命名自己偏好习惯, 个位数的文件重命名,无非就是耗费自己一两分钟的时间,点点鼠标,然后重命名,输入文件名即可

前面分享了: Linux命令行,菜鸟报错之隐藏在换行中的字符^M ,我们下载下来的文件,那么好了,现在问题是我需要对下列 500+文件进行个性化重命名,要在每个文件 前加上数据收集的年份区间,

比如2007_2008_DEMO_E.XPT ,难道还选择鼠标点点:

是不是看得眼花缭乱。你要是不乱的话,反正我是乱了!!!

要是鼠标点点点,想想这个工作量,都是可怕。而且,中间还不能出错喔,万一年份搞错了,那 排查起来,可又是想跳楼的心都有。

那么,有没有更好的方法?

听过 Jimmy 老师的课的都知道啦,解决问题的能力,就是编程的能力。这种活,必须是代码批量处 理啊。。

OK,自己想要的最终命名格式为:把每个文件之前加上年份区间,而且保证每个文件的对应年份准确无 误,这样子:

把文件下载网站中的注释文件复制下载下来,其长这样:

保存成TXT文件,然后读进R,后面就开心的玩耍吧:

rm(list = ls())
##读入文件
dat <- data.table::fread('NHANESLaboratoryData.txt',
             data.table = F)
##去除RDC Only文件,因为文件不对外开放,没有下载链接
library(tidyverse)
tmp <- str_detect(dat$`Data File`,'RDC Only')
tmp <- dat[!tmp,]
tmp$`Data File` <- unlist(lapply(str_split(tmp$`Data File`,' '), 
function(x)x[[1]][1]))
##把文件夹下以XPT后缀的文件全部读取进来
xpt <- as.data.frame(list.files('.','.XPT'))
colnames(xpt) <- 'names'

处理后tmp文件就长这样了:

xpt读进来处理后成这样:

好办,通过xpt[,2]和tmp[,'Data File']列进行匹配,以确定自己是否全部文件已经下载完成。

最后就是拼接,tmp文件中,第一列(Years)和第四列(Data File)拼接起来:

mainNames <- unlist(lapply(str_split(xpt[,1],'\\.'), function(x)x[1]))
xpt <- mutate(xpt,mainNames = mainNames)
##通过xpt[,2]和tmp[,'Data File']列进行匹配
tmp <- tmp[tmp$`Data File` %in% xpt$mainNames,]
##构建最后重命名的文件名称,成为2003—2004_L06AGE_C.XPT
tmp$fileRename <- paste0(tmp$Years,'_',tmp$`Data File`,'.XPT')
tmp$`Data File` <- paste0(tmp$`Data File`,'.XPT')
##其实就是一个函数搞定,批量,无误!
file.rename(tmp$`Data File`,tmp$fileRename)

最后,文件重命名为:

完美!!这样看起来,极大利于后续处理了。任务完成!!!(偷偷的告诉你哟,file.rename函数来自 于base包的哟,xpt文件为SAS数据文件,可以通过R中,foreign包一键读取哟)

文章分享自微信公众号:
生信技能树

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者: 生信技能树
原始发表时间: 2021-03-23
如有侵权,请联系 cloudcommunity@tencent.com 删除。