BASH脚本将随机目录内容复制到另一个位置

时间:2014-06-26 10:25:29

标签: bash shell cron-task

标题几乎说明了一切。我想要完成的是以下内容,

我有12个目录,每个目录包含12个文件。我想创建一个每天午夜运行的脚本,那时它需要随机选择12个目录中的一个并将该目录中的所有12个文件复制到另一个位置。在复制新文件之前,还需要删除目标目录中的所有文件。

谢谢,

海因里希

2 个答案:

答案 0 :(得分:1)

crontab条目(午夜运行)

0 0 * * * /tmp/myscript.bash

这里是/tmp/myscript.bash的内容:

#!/bin/bash
#Destination directory
destDir=/mnt/stuff/someDir

#a randomly chosen directory name
#Dirs to copy from are named dir0,dir1,dir2,dir3,dir4,dir5,dir6,dir7,dir8,dir9,dir10,dir11
dirName=dir$(($RANDOM%12))
#You can add a case statement to set a different name
# based on the number that's chosen in case you already
# had 12 dirs with names other than the integers I've listed.

#Clear out the existing files from the destination dir
rm "${destDir}"/*

#move the files from the 'random' directory to the destination
mv "${dirName}"/* "${destDir}"

(我建议将脚本存储在/ tmp以外的其他地方)

答案 1 :(得分:0)

另一种随机选择文件夹的方法

#! /bin/sh

if [ $# -gt 0 ]; then
    cd "$1";
fi

ls -1 | awk 'BEGIN {srand()}
    {x[NR] = $0}
    END {print "Selected", x[1 + int(rand() * NR)]}'