Копирование тысяч файлов из результатов поиска в один каталог
У меня есть много файлов с одинаковыми именами "data.xml" в моей системе в разных каталогах.
Простой поиск Windows легко находит все это. Я хотел бы иметь возможность выполнить поиск по ним, найти их и скопировать их в каталог с именем data_1.xml и т. Д. И т. Д.
Я просто стремлюсь к тому, чтобы они все были в одном каталоге.
Я пытался использовать Teracopy для тяжелого копирования, но он неправильно переименовывает файлы. Есть ли какой-нибудь инструмент для чего-то подобного?
3 ответа
Просто для полноты, вот решение на базе 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
@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 (Vista и выше) поставляется с инструментом командной строки для надежного копирования, который называется Robocopy. Использование очень просто:
robocopy c:\soruce\from f:\target\to
Работал очень хорошо. (Моя благодарность Крису Хоффману из makeuseof.com за его пост, который дал мне эту идею)