No pipes and subprocesses:
targets=( /tmp/target* ) # all dirs in an array lastdir=${targets[@]: (-1):1} # select filename from last array element lastdir=${lastdir##*/} # remove path lastnumber=${lastdir/target/} # remove 'target' lastnumber=00$(( 10#$lastnumber + 1 )) # increment number (base 10), add leading zeros mkdir /tmp/target${lastnumber: -3} # make dir; last 3 chars from lastnumber
Version with two parameters:
path='/tmp/x/y/z' # path without last part basename='target' # last part targets=( $path/${basename}* ) # all dirs in an array lastdir=${targets[@]: (-1):1} # select path from last entry lastdir=${lastdir##*/} # select filename lastnumber=${lastdir/$basename/} # remove 'target' lastnumber=00$(( 10#$lastnumber + 1 )) # increment number (base 10), add leading zeros mkdir $path/$basename${lastnumber: -3} # make dir; last 3 chars from lastnumber
source share