AI智能
改变未来

Shell脚本编写脚本程序生成类似于手机相册中的文件列表,按年份存放到相应年份文件夹

使用shell脚本编写脚本程序script1.sh,使用其生成类似于手机相册中的文件列表,要求如下:

  1. 生成的文件名如格式“IMG_YYMMDD_HHMMSS.JPG\”
  2. 仅使用touch命令生成空文件即可
  3. 生成文件的日期需要在2018年1月1日至2020年5月10日之间,并且每个月必须有图片文件。
  4. 所有文件生成到当前文件夹下的source文件夹中
  5. 生成的文件总不少于5000个,且每次运行生成的文件总数不同

在处理题目要求时,因为是从2018年1月1号到2020年5月10号,并且每个月必须有图片文件,故设置随机生成数为4971到10000,另外设置每个月一号的00:00:00生成一张图片。

#!/bin/sh#完成一般随机日期#定义函数,产生随机年月日ran_ymd(){#产生范围在0~861的随机数;下面几个函数同理num=$(($RANDOM%861))date=\"20200510\"ymd=`date -d \"${num} days ago\" +%Y%m%d`echo ${ymd}}#产生指定范围的小时ran_hour(){x=`echo {00..23}`array=($x)num=$(($RANDOM%24))hour=`echo ${array[${num}]}`echo ${hour}}#产生指定范围的分钟ran_min(){x=`echo {00..59}`array=($x)num=$(($RANDOM%60))min=`echo ${array[${num}]}`echo ${min}}#产生指定范围的秒ran_sec(){x=`echo {00..59}`array=($x)num=$(($RANDOM%60))sec=`echo ${array[${num}]}`echo ${sec}}ran_time(){a=`ran_ymd`b=`ran_hour`c=`ran_min`d=`ran_sec`time=`echo \"${a}_${b}${c}${d}\"`echo ${time}}#方便测试先设置为1,2;4971.10000n_random(){min=4971max=10000time=$(date +%s%N)num=$[ $max-$min+1]out=$[ $time%$num+$min]echo $out}#下面开始验证功能,循环打印结果path=sourceif [ ! -d \"$path\" ]thenmkdir $pathfiallnum=`n_random`# echo ${allnum}for  i in $(seq 1 $allnum)doresult=`ran_time`touch $path/IMG_$result.JPGdonefor b in {1..5}dotouch $path/\"IMG_20180\"$b\"01_000000\".JPGtouch $path/\"IMG_20190\"$b\"01_000000\".JPGtouch $path/\"IMG_20200\"$b\"01_000000\".JPGdonefor b in {6..9}dotouch $path/\"IMG_20180\"$b\"01_000000\".JPGtouch $path/\"IMG_20190\"$b\"01_000000\".JPGdonefor b in {10..12}dotouch $path/\"IMG_2018\"$b\"01_000000\".JPGtouch $path/\"IMG_2019\"$b\"01_000000\".JPGdone

使用Shell脚本编写程序script2.sh,实现对前述步骤生成的相片文件按年份存放到相应年份文件夹,要求如下:

  1. 使入脚本文件及参数文件夹名称,将会对参数文件夹下所有图片文件按年年份存放
  2. 存放的目标文件夹为target文件夹下的年份文件夹,如2019
  3. 移到相应图片文件至年份文件夹
#! /bin/bash#定义需要文件分类的目录source1=\"source\"#定义将分类后文件存放的目录local=\"target\"if [ ! -d $local ]thenmkdir $localfi#获取文件后缀名之后去重,根据后缀名创建目录types=`ls -al $source1|awk \'NR!=1 && !/^dr/ {print $9}\'|cut -b 5-8 |sort -u`for type in ${types[*]}doif [ ! -d \"$local/$type\" ]thenmkdir $local/$typefidone#将文件转移到至对应的目录下files=`ls -al $source1|awk \'NR!=1 && !/^dr/ {print $9}\'`for file in ${files[*]}dodir=`ls $source1/$file|cut -b 12-15`mv $source1/$file $local/$dir#echo `ls $source1/$file`done
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Shell脚本编写脚本程序生成类似于手机相册中的文件列表,按年份存放到相应年份文件夹