无忧启动论坛

标题: 找linux大神帮忙写个脚本 [打印本页]

作者: 201181795791    时间: 2017-11-30 01:03
标题: 找linux大神帮忙写个脚本
主要是想随机复制文件
有文件夹A和文件夹B  A里面有很对文件名不一样的文件,B文件夹只需要1个固定文件名的文件,是从A随机复制过来的,,,,,求大神帮忙...
作者: 不知    时间: 2017-11-30 15:56
将A=,B=,filename=改成实际的名字,最好先测试一下。
原理:
利用$RANDOM产生随机数,在再用for遍历文件,每次对计数变量减一,当计数变量为0时打印信息并复制文件。
  1. #!/bin/sh
  2. #随机拷贝A文件夹下的文件/文件夹为B文件夹的某一个固定名字。
  3. #设定A文件夹所在目录(全路径,最好不用相对路径)
  4. A=
  5. #设定B文件夹所在目录(全路径,最好不用相对路径)
  6. B=
  7. #设定B文件夹下的那个固定名字
  8. file_name=

  9. total=`ls -l $A | wc -l`
  10. select_num=$[$RANDOM % $total]
  11. for i in `ls $A`
  12. do
  13. if [ $select_num -eq 0 ]
  14. then
  15. echo $A/$i is selected
  16. cp -rf $A/$i $B/$file_name
  17. fi
  18. select_num=$[$select_num-1]
  19. done

复制代码

作者: pc286    时间: 2017-11-30 16:21
本帖最后由 pc286 于 2017-11-30 16:24 编辑

#!/bin/bash
# This is a script for copy a random file from directory A to directory B
# By pc286,2017-11-30
#
cd A
quantity_of_file=0
for file in *
do
        file_list[$quantity_of_file]=$file
        let quantity_of_file+=1
done
let num_by_select=$RANDOM%$quantity_of_file
filename_by_select=${file_list[$num_by_select]}
cd ..
cp A/$filename_by_select B/

作者: pc286    时间: 2017-11-30 16:48
本帖最后由 pc286 于 2017-11-30 16:50 编辑

不知大大的思路更宽广一些,上一个脚本虽可参考,但限定了在当前目录下有A和B两个目录了。新改一个脚本,供参考。
#!/bin/bash
# This is a script for copy a random file from directory a to directory b
# By pc286,2017-11-30
#
Dir_A='/usr/tmp/A'
# 设置目录A的完整路径
Dir_B='/usr/tmp/B'
# 设置目录B的完整路径
cd $Dir_A
#进入目录A
quantity_of_file=0
# 此变量保存目录A的文件个数
for file in *
do
        file_list[$quantity_of_file]=$file
        let quantity_of_file+=1
done
# 以上遍历目录A中所有文件并存放在数组file_list中,并统计A目录中的文件个数
let num_by_select=$RANDOM%$quantity_of_file
# 随机数对文件数取余数,得到随机的数组下标
filename_by_select=${file_list[$num_by_select]}
cp $Dir_A/$filename_by_select $Dir_B/
作者: 201181795791    时间: 2017-11-30 17:40
谢谢大神们....
作者: ljyx0517    时间: 2018-1-20 10:46
太diao了,围观众神




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3