如何随机排列文件并按顺序重命名

如何随机排列文件并按顺序重命名

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

相关内容