bit*_*ion 27 linux command-line shell filesystems directory
假设有一个包含 300 个数据文件的目录。我想随机选择 200 个这些文件并将它们移动到另一个目录中。有没有办法在 Unix/Linux 下做到这一点?
Kev*_*vin 34
如果您的系统有shuf,您可以非常方便地使用它(甚至处理丑陋的文件名):
shuf -zen200 source/* | xargs -0 mv -t dest
Run Code Online (Sandbox Code Playgroud)
如果你没有,shuf但有一个sorttake -R,这应该工作:
find source -type f -print0 | sort -Rz | cut -d $'\0' -f-200 | xargs -0 mv -t dest
Run Code Online (Sandbox Code Playgroud)
files=(*)
for (( i=0; i<200; i++ )); do
keys=("${!files[@]}")
rnd=$(( RANDOM % ${#keys[@]} ))
key=${keys[$rnd]}
mv "${files[$key]}" "$otherdir"
unset files[$key]
done
Run Code Online (Sandbox Code Playgroud)