LINUX.ORG.RU

скрипт для переноса файлов по одному или несколько

 


0

1

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

Ответ на: комментарий от quest

ай да спасибо! ))

работает )) спасибо большое )) моя голова почему-то до такого не додумалась ))

buoi213
() автор топика
Ответ на: комментарий от mky
$ ./test.sh 
remove "/tmp/wergwperpgwoerg1/a"
$ ./test.sh 
remove "/tmp/wergwperpgwoerg1/b"
$ ./test.sh 
remove "/tmp/wergwperpgwoerg1/c"
$ ./test.sh 
$ cat test.sh 
#!/bin/bash

function move()
{
        if [ ! -d "${1}" ] || [ ! -d "${2}" ];
        then
                return 1;
        fi

        cd -- "${1}";
        if [ "${?}" != "0" ];
        then
                return 1;
        fi

        for i in $(ls -1 | head -n ${3});
        do
                echo "remove \"${1}/${i}\"";
                mv "${i}" "${2}";
        done


        return 0;
}


DIR1='/tmp/wergwperpgwoerg1';
DIR2='/tmp/wergwperpgwoerg2';


if [ ! -d "${DIR1}" ] || [ ! -d "${DIR2}" ];
then
        mkdir "${DIR1}" &> /dev/null;
        mkdir "${DIR2}" &> /dev/null;
        touch "${DIR1}/a";
        touch "${DIR1}/b";
        touch "${DIR1}/c";
fi

move "${DIR1}" "${DIR2}" 1;

скучно и нефиг делать

quest ★★★★
()
Ответ на: комментарий от quest

что-то типа

что люди не делают, лишь бы find не пользовать

novitchok ★★★★★
()
Ответ на: комментарий от quest

скучно и нефиг делать

Ну, можно пилить скрипт дальше, сделать возможность обрабатывать пробелы и TAB'ы в именах файлах... правда, когда дойдёт до переводов строк, всё одно появится команда ″find -print0″ :-)

mky ★★★★★
()
Ответ на: комментарий от mky

Уговорил

#!/bin/bash

function move()
{
        if [ ! -d "${1}" ] || [ ! -d "${2}" ];
        then
                return 1;
        fi


        find "${1}" -type f -printf '%p\n' | head -n ${3} |
        {
                while read -r FILE;
                do
                        echo "remove \"${FILE}\"";
                        mv "${FILE}" "${2}";
                done
        }


        return 0;
}


DIR1='/tmp/wergwperpgwoerg1';
DIR2='/tmp/wergwperpgwoerg2';


if [ ! -d "${DIR1}" ] || [ ! -d "${DIR2}" ];
then
        mkdir "${DIR1}" &> /dev/null;
        mkdir "${DIR2}" &> /dev/null;
        touch "${DIR1}/a 1";
        touch "${DIR1}/b 2";
        touch "${DIR1}/c 3";
fi

move "${DIR1}" "${DIR2}" 1;
quest ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.