Назад | Перейти на главную страницу

Копирование тысяч файлов из результатов поиска в один каталог

В моей системе много файлов с одинаковыми именами «data.xml» в разных каталогах.

Обычный поиск Windows легко находит все это. Я хотел бы иметь возможность выполнить поиск по ним, найти их и скопировать в каталог с именем data_1.xml и т. Д. И т. Д.

Я стремлюсь к тому, чтобы все они были в одном каталоге.

Я пробовал использовать Teracopy для выполнения тяжелой работы по копированию, но он неправильно переименовал файлы. Есть ли какой-нибудь инструмент для чего-то подобного?

@ bobber205

find / -name "*.xml" -exec cp  {} ./ \;

Должен сделать свою работу.

Сохраните этот скрипт, скажем, rename.sh, а затем ./rename.sh

это переименует их

#!/bin/sh
i=1
for j in `ls *.xml`
do
  orig=$j
  echo $orig
  mv $orig orig$i.xml
   i=`expr $i + 1`
done

РЕДАКТИРОВАТЬ

другой способ копирования - это

 find / -name "*.xml" | xargs cp {} /path/to/copy

Для полноты картины вот решение для Windows для запуска в оболочке CMD:

@echo off

set SRC=c:\source
set DST=c:\dest
set FN=0

for /F "usebackq delims=" %%i in (`dir /s /b %SRC%\*.xml`) do call :docopy "%%i"
goto end

:docopy
set /A FN=%FN% + 1
echo copy %1 "%DST%\%~n1_%FN%%~x1"
:end

В ранее предложенное решение не удалось в моем случае, когда целевой каталог содержал файлы и каталоги с пробелами и нелатинскими символами в их именах. Оказывается, Windows (Vista и выше) поставляется с инструментом командной строки для надежного копирования, который называется Робокопия. Использование очень простое:

robocopy c:\soruce\from f:\target\to

Сработало очень хорошо. (Мои благодарности Крису Хоффману из makeuseof.com за его пост, который дал мне эту идею)