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