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) )