Linux下实现文件夹内随机拷贝文件到另一个文件夹

Linux下实现文件夹内随机拷贝文件到另一个文件夹

前几天,搞训练集和验证集划分的时候,从源文件中拷贝训练集和验证集,没考虑到样本的均分,导致训练效果不尽如人意。又回过头来重新划分下,参考几个大神的代码,自己搞了个随机拷贝文件脚本,代码如下:

datapath='源文件路径'
trainpath='训练集目标文件路径'
dirlist=`ls $datapath`

dirNum=`ls $datapath  -l|grep "^-"|wc -l`
#echo $dirNum
k=0
for fileName in $dirlist
do 
	fileNameArr[k]=$fileName
	k=$k+1
done

arr=( $(seq 1 $dirNum ))
num=${#arr[*]}
#echo $num

filterNum=120

res=${arr[$(( $RANDOM%num ))]}
fileArr[1]=$res
#echo $fileArr[1]

let  i=2
while(( i <= filterNum));
do
	res=${arr[$(($RANDOM%num))]}
	fileArr[i]=$res
	#echo $res
	#echo ${fileArr[i]}
	for ((j=1 ; j<i ; j++));
	do
		numJ=${fileArr[j]}
		if  [ $res = $numJ  ]
		then
			unset fileArr[i]
			((i--))#i=$i-1
			break
		fi
	done
	((i++))#i=$i+1
done

for (( indexNum = 0 ; indexNum < $filterNum ; indexNum++ ))
do
	#i=${fileArr[indexNum]}
	#echo $i
	#echo ${fileNameArr[$i]}
	echo $indexNum
	mv  $datapath/${fileNameArr[${fileArr[indexNum]}]} $trainpath
done

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值