标题几乎说明了一切。我想要完成的是以下内容,
我有12个目录,每个目录包含12个文件。我想创建一个每天午夜运行的脚本,那时它需要随机选择12个目录中的一个并将该目录中的所有12个文件复制到另一个位置。在复制新文件之前,还需要删除目标目录中的所有文件。
谢谢,
海因里希
答案 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)]}'