У меня есть процесс, который постепенно создает каталоги, присваивает им индекс в порядке возрастания и сохраняет результаты в каталоге последней итерации, который имеет самый большой индекс. Учитывая, что число итераций, необходимых для завершения процесса, варьируется в зависимости от набора данных, я не могу предсказать индекс последнего каталога. Например:
#Dataset 1 may produce
ls -d Dir*
... Dir4 Dir5
а также
#Dataset 2 may produce
ls -d Dir*
... Dir34 Dir35
Я догадался, что смогу создать и массив, содержащий имя всех каталогов, сделать копию последнего и удалить все каталоги
ARR=($(ls -d Dir*))
cp ${ARR[@]:(-1)} LastDirectory #Preserve my results in LastDirectory
rm Dir*
Но это верный способ выстрелить себе в ногу. Допустим, программе требуется десять итераций для завершения. Тогда Dir10 будет содержать мои результаты. Если я перечислю каталоги и передам их массиву, Dir10 не будет в последней позиции и будет удален. Это непредсказуемое поведение, которого я хочу избежать!
#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
Есть ли безопасный способ избавиться от всех каталогов, кроме каталога с наибольшим индексом?
ПРИМЕЧАНИЕ. Я думал об использовании дат создания каталогов, но, похоже, эта опция не поддерживается в Linux.