Rsync
rsync
- это инструмент, доступный и для Windows, обычно используемый для удаленной синхронизации каталога ... но он также отлично работает и для локального каталога ... как указано в его собственном описании
быстрый, универсальный, удаленный (и локальный) инструмент для копирования файлов
Из этого ответа на unix.stackexchange ...
rsync -a --prune-empty-dirs --include '*/' --include '*.txt' --exclude '*' source/ target/
Обратите внимание, что существует опция для удаления файлов из источника, которые вы можете включить в командную строку, я думаю, что вы ищете это --remove-source-files
, но проверьте это внимательно. Другой вариант, который вы можете найти полезным, это -n
-n, --dry-run perform a trial run with no changes made
--remove-source-files sender removes synchronized files (non-dir)
находить
find
- это еще один инструмент, который вы можете найти в вашей оболочке bash
под windows, а также скомпилированный исполняемый файл (gnu findutils)...
Следующая строка работает под Linux, но вы можете изменить оператор cp
чтобы он соответствовал спецификациям вашей системы. Из другого ответа...
find . -name '*.txt' -exec cp --parents \{\} /target \;
Windows эквивалент find
Из другого вопроса / ответа на ваш пакетный скрипт вы можете использовать эти подсказки ...
dir <drive: [drive:]> /s | findstr /i <pattern>
... конечно, если они чувствовали необходимость в силовой оболочке, разумно ожидать, что в этой среде должен быть более простой способ сделать это ...
но, может быть, следующая является достаточно простой отправной точкой для вашего сценария:
dir c:\foo /s *.txt