从一个文件夹里随机抽些文件复制到另一个文件夹里:
#!/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,即可。