today="$( date +"%Y%m%d" )"
number=0
while test -e "$today$suffix.txt"; do
(( ++number ))
suffix="$( printf -- '-%02d' "$number" )"
done
fname="$today$suffix.txt"
printf 'Will use "%s" as filename\n' "$fname"
touch "$fname"
today
obtém a data de hoje e inicializamos nosso contador, number
a zero. Em seguida, testamos para ver se o nome do arquivo já existe ( $suffix
estará vazio para começar). Se isso acontecer, incremente o contador e crie um novo sufixo usando printf
. Repita até que não tenhamos mais uma colisão de nome de arquivo.
A string de formato para o printf
, -%02d
, significa "um traço literal seguido por um inteiro de dois dígitos preenchido com zero". O traço duplo ( --
) é necessário na frente da string de formatação para impedir que printf
interprete o traço em a string de formato como uma opção.
O touch
está lá apenas para testes.
Isso gerará nomes de arquivos como
20170125.txt
20170125-01.txt
20170125-02.txt
20170125-03.txt
nas corridas subsequentes.