Как перемешивать файлы и переименовывать их последовательно

Как перемешивать файлы и переименовывать их последовательно

У меня есть набор изображений .png, которые в настоящее время названы в последовательности от 1 до 1000. Как мне взять эти изображения и присвоить им случайный номер от 1 до 1000, чтобы в итоге получить тот же диапазон последовательных номеров, но изображение под каждым номером уже не будет одинаковым?

решение1

Можно сделать так:

names=({1..1000}.png)
new_names=($(shuf -e {1..1000}.png.tmp))
for n in "${!names[@]}"; do
    echo mv "${names[$n]}" "${new_names[$n]}"
done && rename -n 's/\.tmp$//' *.tmp
  • Создайте два массива $namesи$new_names
  • нам нужно дать ему имя .tmpили что-то вроде того, чтобы не перезаписывать существующие файлы, мы исправим это с помощью rename.
  • перебрать ключи массива и выполнить цикл mvдля каждого.

Примечание: чтобы выполнить команду, удалите echoи -nиз rename.

Связанный контент