# nextfile `nextfile` is a Lua library used to generate the "next" filename in a sequence. ## Installation `nextfile` is published on [LuaRocks](https://luarocks.org), use `luarocks install nextfile` to install it. ## Usage The `nextfile` library actually contains two exported modules, `nextfile` and `prevfile`. `prevfile` scans the files in a directory and returns the "most recent" filename according to a ["human sort"](https://en.wikipedia.org/wiki/Natural_sort_order) algorithm. `prevfile` is also leveraged by `nextfile`, which then gives the "next file" according to the following rules: - If the previous filename is entirely numeric, then the next file is the next number. For example, if the previous file were "500.jpg", then the next file would be "501.jpg". - If the previous filename ends in a letter, then the next file will bump it to the next letter. For example, if the previous file were "200a.png", the next file would be "200b.png". By default, `nextfile` will give the next file the same file extension as the previous file; there is a second optional parameter for specifying the file extension. ## Examples ### Create Test Files ```sh user@box:~$ cd $(mktemp -d) user@box:/tmp/tmp.g9nf7G4U1C $ touch {1,2,3}.txt ``` ### Use prevfile ```lua local prevfile = require("prevfile") local pfile = prevfile.prevfile("/tmp/tmp.g9nf7G4U1C") print(pfile) -- 3.txt ``` ### Use nextfile ```lua local nextfile = require("nextfile") local nfile = nextfile.nextfile("/tmp/tmp.g9nf7G4U1C") print(nfile) -- 4.txt -- Specify an alternate file extension nfile = nextfile.nextfile("/tmp/tmp.g9nf7G4U1C", "png") print(nfile) -- 4.png ``` ### Create Alphabetical Test File ```sh user@box:/tmp/tmp.g9nf7G4U1C $ touch 4a.txt ``` ```lua local nextfile = require("nextfile") local nfile = nextfile.nextfile("/tmp/tmp.g9nf7G4U1C") print(nfile) -- 4b.txt ```