R语言 如何重命名文件而不改变修改日期

iyzzxitl  于 2023-01-22  发布在  其他
关注(0)|答案(3)|浏览(213)

我写了一个脚本来重命名文件。但是我发现修改日期被更改为相同的。所以如果按日期排序,原始顺序就会被破坏。有没有办法在不更改修改日期的情况下更改名称?或者,虽然日期更改了,但如果按日期排序,顺序仍然相同。以下是我当前的代码:

# save previous working folder
wkdir <- getwd()

# set the target folder
setwd("C:/Users/YY/Desktop/Tmp file/")

# set the file pattern
a <- list.files(path = ".", pattern = "abc_*.*$") 

# set the name to be replaced
b<-gsub("abc_","ABC_",a)

# rename
file.rename(a,b)

# restore previous working folder
setwd(wkdir)

如果有人能帮助我,我将不胜感激。

wbrvyc0a

wbrvyc0a1#

我也有同样的问题-我需要处理文件,然后存档。我先在R中尝试,然后意识到副本更改了文件的原始日期时间戳。
我最终学会了shell()命令,并使用下面的代码解决了这个问题。因为我使用的是Windows操作系统,所以我在文件名中使用-R和-d来表示是R的形式(路径中的/形式)还是Windows的形式(路径中的\形式),并使用normalizePath()转换。

sourcefileR <- "c:/Users/myname/Documents/test.dat"
destfileR <- "c:/Users/myname/Documents/somewhereelse/test.dat"
sourcefiled <- normalizePath(sourcefileR)
# now looks like: "c:\\Users\\myname\\Documents\\test.dat"
destfiled <- normalizePath(destfileR)

rept <- shell(paste("copy ", sourcefiled, destfiled, sep=" "), intern=TRUE)

intern参数使操作系统反馈进入R对象rept,可以搜索rept以找到“1 file(s)copied”字符串表示成功或您想要的任何其他错误捕获。
我在平台上使用R版本2.15.3(2013年3月1日):x86_64-w 64-mingw 32/x64(64位),运行Windows 7专业版SP1。

oxiaedzo

oxiaedzo2#

当然有可能!

而不是使用像"REN"或"RENAME"命令,您可以使用"MOVE"命令重命名您的文件/文件夹,它们的日期将保持完全相同。
示例:
移动"C:\文件夹\文件名. txt""C:\文件夹\新文件名. txt"

  • (我不知道它是否适用于所有版本的Windows,但似乎至少适用于Windows 7)*

如果由于某种原因您无法使用MOVE命令,则可以使用Nirsoft的Nircmd之类的程序将文件日期更改为您想要的任何日期。
语法:
nircmd.exe设置文件时间 "创建时间""修改时间"
示例:
nircmd.exe设置文件时间"c:\临时\我的文件. txt""2003年6月24日17:57:11""2005年11月22日10:21:56"

svujldwt

svujldwt3#

不更改修改日期就无法更改名称。请考虑一下!您正在修改文件(即使您没有修改内容)。
问:你在Windows文件夹视图中是按R还是按外部排序?问:你有没有想过按创建日期排序?
如果你在windows中排序,你应该知道如何按“创建日期”排序,如果你在R中排序,使用file.info获取相关属性,然后按此排序。

相关问题