Eu tenho um processo que cria progressivamente diretórios, atribui um índice em ordem crescente para eles e armazena os resultados no diretório da última iteração, aquele com o maior índice. Como o número de iterações necessárias para concluir o processo varia de acordo com o conjunto de dados, não posso prever o índice do último diretório. Por exemplo:
#Dataset 1 may produce
ls -d Dir*
... Dir4 Dir5
e
#Dataset 2 may produce
ls -d Dir*
... Dir34 Dir35
Eu acho que eu poderia criar e Array que contém o nome de todos os diretórios, fazer uma cópia do último e remover todos os diretórios
ARR=($(ls -d Dir*))
cp ${ARR[@]:(-1)} LastDirectory #Preserve my results in LastDirectory
rm Dir*
Mas esta é uma maneira de me atirar no pé. Digamos que o programa leve dez iterações para terminar. Então, Dir10 conterá meus resultados. Se eu listar os diretórios e passá-los para o array, o Dir10 não estará na última posição e será eliminado. Este é o tipo de comportamento imprevisível que eu quero evitar!
#You can copy-paste this piece of code to replicate the problem:
mkdir Dir1 Dir2 Dir3 Dir4 Dir5 Dir6 Dir7 Dir8 Dir9 Dir10
ls -d Dir*
Dir1 Dir10 Dir2 Dir3 Dir4 ... Dir8 Dir9
ARR=($(ls -d Dir*))
echo ${ARR[@]:(-1)}
Dir9
Existe uma maneira de salvar todos os diretórios, exceto aquele com o maior índice?
NOTA: Pensei em usar datas de criação de diretórios, mas parece que essa opção não é suportada no Linux.
ls -t.