2016-02-24 6 views
0

Я пишу сценарий для копирования файлов из папок под одной директорией в общую папку. Для этого мне нужно перебирать папки в каталоге. Папки по дате, поэтому я использую меньше и больше. Но я не могу попасть в петлю. Не могли бы вы сообщить мне, что не так с моим кодом.Копирование файлов из папок в один каталог в общую папку

#!/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 

Здесь папки под Директория/Входящие сделаны datewise начиная с 20151201 до 20151231. Таким образом, мне нужно, чтобы извлечь все файлы, начиная от названия к общей целевой директории Я также пытаюсь сделать это как скрипт, где, если я передаю параметры, такие как a, b, c, он перейдет в соответствующий каталог данных и выберет файлы оттуда

ответ

0

Ваше заявление while неверно. Написать это так:

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

Пожалуйста, убедитесь, что $ 1, $ 2 и $ 3 действительно содержат значения, которые вы ожидаете.

+0

Это приводит к синтаксической ошибке строка 13: ((:> 20151201 && <20151231: ошибка синтаксиса: операнд ожидаемой (маркер ошибки "> 20151201 && <20151231") – Pranav

+0

Либо вы забыли ввести параметры, или параметры пусты. Вы можете проверить это с помощью 'while (($ {2:? two}> 20151201 && $ {3:? three} <20151231))'. – user1934428

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, так как это похоже на некоторые месячные данные. Возможно, вы можете приспособиться к вашим потребностям. Надеюсь, поможет.

+0

любая идея, как я могу увеличить дату в цикле дата формат должен быть yyyymmdd – Pranav

+0

вопрос не ясен мне. Могу ли я узнать usecase – BharatG

+0

У меня есть дата в формате 20151201, как я могу увеличить дату до 20151202 – Pranav

Смежные вопросы