gpt4 book ai didi

bash - 以随机顺序将文件移动到几个目录

转载 作者:行者123 更新时间:2023-11-29 09:47:09 25 4
gpt4 key购买 nike

我想以随机顺序将大量文件从一个目录移动到几个目录dst/f0..dst/f9

我试着这样做:

ls src/*.xml | head |  xargs -I {} mv {}  f$(($RANDOM % 10))

但是所有的文件都被移动到了一个目录src/fN

我该怎么做?谢谢

最佳答案

按照您编写的方式,$RANDOM 只执行一次。最好生成一个每次都调用它的循环:

for file in src/*.xml
do
mv "$file" "f$((RANDOM % 10))"
done

这样你也可以避免解析 ls 的输出,这是 a bit dangerous。 .


要加快速度,您可以使用 awk。例如,如果您有 GNU awk:

awk -v seed=$RANDOM 'BEGIN{srand(seed)} FNR==1{printf "mv \"%s\" dst/f%d\n", FILENAME, int(rand()*10); nextfile}' *

这使用 srand(),如 Random numbers generation with awk in BASH shell 中所述和 nextfile .

这将写入一个充满 mv file dir/ 表达式的文件,每行一个。然后,只需执行 cat file | sh 来执行它。

关于bash - 以随机顺序将文件移动到几个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com