前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何批量给自己的文件重命名

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

作者头像
生信技能树
发布2021-03-23 20:31:38
1.7K0
发布2021-03-23 20:31:38
举报
文章被收录于专栏:生信技能树

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

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

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

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

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

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

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

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

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

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

代码语言:javascript
复制
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)拼接起来:

代码语言:javascript
复制
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 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档