Это немного зависит от вашей операционной системы и, в частности, от возможностей вашей версии tar
и от того, есть ли у вас команда cpio
. Это также немного зависит от того, есть ли у вас новые строки (в частности) в именах файлов; большинство людей этого не делают.
Вариант № 1
cd /old-dir
find . -name '*.mov' -print | cpio -pvdumB /new-dir
Вариант № 2
find . -name '*.mov' -print | tar -c -f - -T - |
(cd /new-dir; tar -xf -)
Команда cpio
имеет режим сквозного копирования (копирования), который делает именно то, что вы хотите, учитывая список имен файлов, по одному на строку, на своем стандартном вводе.
В некоторых версиях команды tar
есть опция для чтения списка имен файлов, по одному на строку, из стандартного ввода; в MacOS X эта опция -T -
(где lone -
означает «стандартный ввод»). Для первой команды tar
опция -f -
означает (в контексте записи архива с -c
, запись в стандартный вывод); во второй команде tar
опция -x
означает, что -f -
означает «чтение из стандартного ввода».
Могут быть и другие варианты; посмотрите на страницу руководства или справочную информацию о tar
довольно внимательно.
Этот процесс копирует файлы, а не перемещает их. Вторая половина операции будет:
find . -name '*.mov' -exec rm -f {} +