将文件从一个目录中的文件夹复制到公用文件夹

时间:2016-02-24 06:33:31

标签: shell unix sh ksh

我正在编写一个脚本,用于将文件从一个目录下的文件夹复制到一个公共位置。为此,我需要遍历目录中的文件夹。文件夹是日期的,所以我使用的是小于和大于。但我无法进入循环。能告诉我我的代码有什么问题吗。

#!/usr/bin/ksh

SCRIPT_DIRECTORY='/abc/script'
DATA_DIRECTORY='/a/inbox'
TARGET_DIRECTORY='/abc/final'
START_DATE=$2
END_DATE=$3

if [ $1 == 'a' ]
then
   while [[ $2 -gt 20151201 ]] && [[ $3 -lt 20151231 ]]
   do
     for file in `ls $DATA_DIRECTORY`
     do
        cp name* $TARGET_DIRECTORY
     done
  done
fi

此处/ / inbox目录下的文件夹是从20151201到20151231开始的日期。所以我需要从name开始获取所有文件到公共目标目录 我也试图把它作为一个脚本,如果我传递像a,b,c这样的参数,它将转到相应的数据目录并从那里获取文件

2 个答案:

答案 0 :(得分:0)

您的while声明错误。写得像这样:

while (($2 > 20151201 && $3 < 20151231))

请同时验证,$ 1,$ 2和$ 3确实包含您期望的值。

答案 1 :(得分:0)

尝试这个(我已经尝试了它并且有效)

if [ $1 == 'a' ] then # use ls $DATA_DIRECTORY as mentioned by you; i could not bring it here for file in ls $ DATA_DIRECTORY do if [ $file -ge 20151201 -a $file -le 20151231 ]; then cp $DATA_DIRECTORY/$file/* $TARGET_DIRECTORY fi done fi

您只需要一个循环进行迭代,并在循环中移动了日期检查(如果条件)。我使用-ge代替-gt,因为它看起来像是一些月度数据。也许你可以适应你的需要。希望它有所帮助。