[R] Rename multiple files in a directory and write renamed files back to directory

Zilefac Elvis zilefacelvis at yahoo.com
Fri Dec 5 17:13:07 CET 2014


Hi Chel,
I got it right.
Many thanks.

file.rename(file_names, to=paste0("rcp45_Daily_Sim", 200:210))
list.files(pattern="rcp45_Daily_Sim") 
[1] "rcp45_Daily_Sim200" "rcp45_Daily_Sim201" "rcp45_Daily_Sim202"



On Friday, December 5, 2014 9:35 AM, Zilefac Elvis <zilefacelvis at yahoo.com> wrote:
Hi Chel,
How can I modify the script such that the numbering starts from 200,... instead of 001?
flag="0" does not accept anything other than 0.
Thanks,
Asong.




On Thursday, December 4, 2014 11:17 PM, Chel Hee Lee <chl948 at mail.usask.ca> wrote:
I see that a function 'format()' is used in your code.

> format(c(1,5,32,100), width=3, flag="0")
[1] "  1" "  5" " 32" "100"

> formatC(c(1,5,32,100), width=3, flag="0")
[1] "001" "005" "032" "100"

I hope this helps.

Chel Hee Lee



On 12/04/2014 10:54 PM, Zilefac Elvis wrote:
> 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