Eu queria saber se era possível ter um comando que cria um arquivo, mas toda vez que o comando é executado, ele não substitui o arquivo criado na execução anterior.
Por exemplo: touch test1.txt
criaria 1 arquivo chamado test1.txt
. Mas na próxima vez que o executar, gostaria que o novo arquivo fosse chamado test2.txt
, ou algo assim. Portanto, sem substituir o arquivo já existente. De certa forma, poderia ser executado várias vezes sem problemas.
Não me entenda mal, não estou tentando criar vários arquivos com um comando.
Desde já, obrigado!
fonte
touch test$(date +%Y%m%d-%H%M%S) ; touch test$(date +%Y%m%d-%H%M%S)
, ele criou apenas um arquivo. O tempo em nanossegundos funciona:touch test$(date +%Y%m%d-%H%M%S%N) ; touch test$(date +%Y%m%d-%H%M%S%N)
etouch test$(date +%Y%m%d-%H%M%S%N) test$(date +%Y%m%d-%H%M%S%N)
crie dois arquivos cada.$()
uma vez permite expressões ninho, mas você também pode usar acentos graves:touch test`date +%Y%m%d-%H%M%S`
.Duvido que exista um comando geral para fazer isso, mas você pode pensar em algo assim:
O parâmetro de entrada para a função é dividido em prefixo, número, sufixo e, até que o arquivo exista, o número é incrementado. Encontrado um slot gratuito, o arquivo é criado com
touch
.O mecanismo de divisão deve ser adaptado às suas necessidades e várias verificações de erros devem ser adicionadas.
fonte
Se os números de sequência não forem necessários, a maneira mais fácil é usar o
mktemp
comando.fonte
TMPFILE=$(mktemp /tmp/example.XXXXXXXXXX) || exit 1 echo "program output" >> $TMPFILE
TMPFILE='/tmp/tmp.$$'; touch $TMPFILE