On Fri, Feb 06, 2015 at 12:12:45PM -0500, Roman Gelfand wrote:
> I need to write files with name format {5 digit sequential
> number}.{extension I will supply}.
> Is there a utility which would allow me to copy/move/put a file with the
> above name format incrementing the sequence for each subsequent file.
> Something similar to what logrotate is doing.
> Tlhanks in advance
Not tested, but this could work:
#!/bin/bash
# Start at zero
sequencenumber=0
# Extension is supplied to the script
extension=$1
# Working directory is second parameter, or CWD if not specified
workingdir="${2:=.}/"
# Use find to get the last number used
# Find lists the files, tail gives us the last one, and the sed strips
# the extension off it
lastfile=$(find $workingdir -name *.$extension|tail -n 1|sed "s/\.${extension}$//")
# New file is "lastfile" + 1
newfile=$(( lastfile + 1 ))
# Finally, echo out the new filename
printf "${workingdir}%05d.$extension" $newfile
So, that lists a specified directory, adds one to the last file there
and prints out the new name. You'd use it like:
$ mv someproblematic.file $(theabovescript.sh .log)
Or if you want to move to a different directory:
$ mv someproblematic.file $(theabovescript.sh .log /path/to/foo)
NOTE that there is a race condition here. If, between calling "find" and
doing your "mv", the target file comes into existance, then you may
clobber it.
Attachment:
signature.asc
Description: Digital signature