LINUX.ORG.RU

Привет.

Папки остались в винде.

#!/bin/bash

for i in DIR_LIST; do
  find "$i" -type f -or -type l -print0 | xargs -0 -iX mv X DST_DIR
done

Вроде, так.

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

да кстати это ты хорошо напомнил.. я почему-то думал что есть какая нить тулза всё таки задача довольно часто нужна.

sneer
() автор топика
Ответ на: комментарий от sneer

| xargs -0 -iX mv X DST_DIR вот эта часть у меня не работает и я её как-то не понял если чес. я по своему делал но интересно всё равно

sneer
() автор топика
Ответ на: комментарий от sneer

пофлеймлю.

Чем тебе не тулза 3 строчки?

Зачем плодить кучу инструментов под всякие задачи которые на самом деле редки? (мне с 2000-го года в linux ни разу не пришлось решать такую задачу) Кстати, в офтопике тоже IMHO подобной тулзы нет. :)

KsI__
()
Ответ на: комментарий от sneer

Еще вариант короче и проще:

Есть Dir ./2 с subdir ами и файлами.

Файлы из ./2 в ./1 переносятся так.

find ./2 -type f -exec mv {} ./1 \;

KsI__
()
Ответ на: комментарий от rab_boziy

>но если файлов слишком много, то вообще работать не будет.

Почему это? А если про буферы в пайпах вспомнить?

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

у меня как раз с xargs неработало

sneer
() автор топика

Ещё раз.

#!/bin/bash

for i in DIR_LIST; do
  find "$i" -type f -or -type l -print0 | xargs -0 -s2000 -P0 mv --target-directory=DST_DIR
done


Во-первых, в случае одной директории этот общий случай переходит в частный, указанный товарищем выше.
Во-вторых, данный пример работает быстрее find с -exec.
В-третьих, данный пример исключает переполнение буфера аргументов командной строки.

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

Что не понятно с DST_DIR? Проблемы заменить DST_DIR на нужную диру?

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

>Во-первых, в случае одной директории этот общий случай переходит в частный, указанный товарищем выше.

Cогласен.

>Во-вторых, данный пример работает быстрее find с -exec. Не знал. Тепрь знаю. Спасибо. А из-за чего find -exec тормозит?

>В-третьих, данный пример исключает переполнение буфера аргументов командной строки.

Согласен.

KsI__
()
Ответ на: комментарий от Lego_12239

>for i in DIR_LIST; do
> find "$i" -type f -or -type l -print0 | xargs -0 -s2000 -P0 mv --target-directory=DST_DIR
>done

find $DIR_LIST type f -or ...

Учите мат.часть

anonymous
()
Ответ на: комментарий от KsI__

> А из-за чего find -exec тормозит?

Потому, что, насколько я знаю, он выполняет -exec последовательно, хотя с некоторой версии может накапливать аргументы для запуска (конструкция - {}+). xargs же с -P0 плодит кучу параллельных процессов.

Как-то так, мне думается.

P.S. Извини, что сразу не ответил. Не заметил вопроса из-за форматирования.

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

> Почему это? А если про буферы в пайпах вспомнить?

Слишком длинная командная строка получится. В гнутом xargs я с таким сталкивался. Давно правда.

rab_boziy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.