Você pode fazer isso com ls , sort , tail e cut .
Comece a renomear bash_history para bash_history 1 , para que todos os arquivos tenham um número.
Em seguida, execute o seguinte para copiar o próximo arquivo:
#!/bin/bash
D=~/Desktop/Coding/Bash\ Histories
num=$(ls "$D" | cut -d ' ' -f 2 | sort -nr | head -1)
num=$(( num + 1 ))
cp ~/.bash_history "$D/bash_history $num"
O ls $D apenas lista os arquivos no diretório "armazenamento". De cada um dos nomes (por exemplo, bash_history 16 , que não inclui o caminho), o cut -d ' ' -f 2 divide em ' ' e recebe o segundo campo (o número 16 ). Os números encontrados dessa maneira são classificados em ordem inversa ( -r ) como números ( -n ), porque as sequências 10 estariam antes de 2 . A partir dessa lista (lembre-se que é invertida), você pega o primeiro, ou seja, o maior número.
Esse número você aumenta e usa para o próximo arquivo.
Eu preferiria determinar uma ordem de magnitude (por exemplo, 5 dígitos) primeiro e depois usar printf %05d $num para obter os zeros iniciais (que mantêm os arquivos em ordem alfabética na mesma ordem dos números (pelo menos até atingir 100000) )