
У меня есть набор изображений .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
.