[R] Rename multiple files in a directory and write renamed files back to directory
Zilefac Elvis
zilefacelvis at yahoo.com
Fri Dec 5 05:54:48 CET 2014
Hi Chel,
Thanks for the timely reply.
It works but a minor problem remains.
Here is the modified version of your code:
file_names<- list.files(pattern="Sim1971-2000_Daily_")
new_names <- paste("rcp45_Daily_Sim",format(seq(length(file_names)), width=3, flag="00"), ".dat", sep="")
#files <- paste(paste(getwd(),lfile,sep="/"), list.files(lfile),sep="/")# getwd of these files/contents
file.rename(from=file_names, to=new_names)
list.files(pattern="*.dat")
I changed width =3 and flag=00 because my output has to be 001.dat...200.dat. However, this is what i got:
list.files(pattern="*.dat")
[1] "rcp45_Daily_Sim 1.dat" "rcp45_Daily_Sim 2.dat" "rcp45_Daily_Sim 3.dat" "rcp45_Daily_Sim 4.dat"
[5] "rcp45_Daily_Sim 5.dat" "rcp45_Daily_Sim 6.dat" "rcp45_Daily_Sim 7.dat" "rcp45_Daily_Sim 8.dat"
[9] "rcp45_Daily_Sim 9.dat" "rcp45_Daily_Sim 10.dat"
The zeros disappear but I need them.
Please help.
Asong.
On Thursday, December 4, 2014 10:16 PM, Chel Hee Lee <chl948 at mail.usask.ca> wrote:
I put five data files (example1.dat, example2.dat, example3.dat,
example4.dat, example5.dat, example6.dat) in my working directory.
>
> file_names <- list.files(pattern="*.dat")
> file_names
[1] "example1.dat" "example2.dat" "example3.dat" "example4.dat"
"example5.dat"
[6] "example6.dat"
>
> new_names <- paste("new_example_",
+ formatC(seq(length(file_names)), width=2, flag="0"),
+ ".dat", sep="")
> new_names
[1] "new_example_01.dat" "new_example_02.dat" "new_example_03.dat"
[4] "new_example_04.dat" "new_example_05.dat" "new_example_06.dat"
>
> file.rename(from=file_names, to=new_names)
[1] TRUE TRUE TRUE TRUE TRUE TRUE
> list.files(pattern="*.dat")
[1] "new_example_01.dat" "new_example_02.dat" "new_example_03.dat"
[4] "new_example_04.dat" "new_example_05.dat" "new_example_06.dat"
>
Is this what you are looking for? I hope this helps.
Chel Hee Lee
On 12/04/2014 09:44 PM, Zilefac Elvis via R-help wrote:
> Hello,
> I would like to rename multiple files in a directory. Filenames are read using:
>
> lfile <- list.files(pattern="rcp45_Daily_")
> files <- paste(paste(getwd(),lfile,sep="/"), list.files(lfile),sep="/")# getwd of these files
>
> dput(lfile)
> c("rcp45_Daily_Sim001.dat", "rcp45_Daily_Sim002.dat")
>
>
> - How can I rename these files (200 in number) using something like:
> file.rename(lfile, paste0("rcp45_Daily_Sim", 1:200))?The new filenames should be rcp45_Daily_Sim001, rcp45_Daily_Sim002, ..., rcp45_Daily_Sim200.
>
> - I would like to write the new file names to the directory.
>
> The data files contain huge amounts of data and should not be read into R. Only the file names should change.
>
> Many thanks for your helpful answers.
> Asong.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list