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

时间:2022-03-10 21:01:51

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

#!/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,即可。