我有一组 .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