随机从一个文件夹中抽若干文件复制到另一个文件夹里

从一个文件夹里随机抽些文件复制到另一个文件夹里:

#!/bin/bash
rootpath="/home/parapax/dev/"
testdatanum=5
srcpath=${rootpath}featureCata
#srcpath=${rootpath}dir
distpath=${rootpath}featureCata1
echo $rootpath
echo $srcpath


filenames=`ls ${srcpath}`

#echo $filenames

len=0
for file in $filenames
do
#echo $file;
len=`expr $len + 1`;
#echo $len;
done

echo "len="$len
for ((freq=0;freq<5;freq++));
do
rand=$RANDOM;
echo $rand;
((i=$rand%$len));
echo "i="$i;
file=`echo ${filenames}|cut -d " " -f$i`;
echo $file;
cp ${srcpath}"/"$file ${distpath}"/"$file
done

cut命令里,-d表示分隔符,这里使用冒号: 作为分隔符,-f 表示字段

详见http://blog.csdn.net/arkblue/article/details/8507989

bash里的变量自增:

1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))

上面的脚本一开始在ubuntu里跑的时候一直提示Syntax error: Bad for loop variable,搜了一下,发现是以下原因:

Ubuntu为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼。

解决方法是 取消dash

sudo dpkg-reconfigure dash
在选择项中选No,即可。

原文地址:https://www.cnblogs.com/parapax/p/3722545.html