2012-10-01 4 views
0

У меня есть одно из этих утра, где ничего не идет в план. Мне нужно, чтобы переместить файлы в целевой каталог на куски 1000 во времяпетля для перемещения файлов не работает

Я хотел петлю через мои файлы, как так

for i in `find . -name '*XML'` 
    for((b=0; b<1000; b++)) 
    do 
    mv $i targetdirect/ 
    done 
done 

Но я получаю «-bash: ошибка синтаксиса около неожиданной лексемы` сделано :" ошибка.

Что мне не хватает ???

+0

Этот цикл также будет (желательно) перемещать каждый файл в целевой каталог 1000 раз. Он не перемещает 1000 разных файлов за вызов на 'mv'. – chepner

ответ

0

Ваш первый for цикл не имеет соответствующих do (У вас есть два done, но только один do.)

3

Второй for цикл является синтаксической ошибкой. Также вы должны удвоить котировку "$i".

Что вы хотите сказать, переместив 1000 файлов за раз? Что-то вроде этого возможно?

find . -name '*.XML' -print0 | xargs -r0 -n 1000 mv -t targetdirect 

-print0 и соответствующие xargs -0 являются расширением GNU обрабатывать произвольные имена файлов. Это работает, потому что нулевой символ является недопустимым символом в именах файлов в Unix; следовательно, он безопасен для использования в качестве разделителя между именами файлов. Для файлов с регулярными именами (без котировок, новых символов и т. Д. В именах файлов) это может показаться параноидальным, но это хорошо документированная практика и FAQ.

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