В моей системе много файлов с одинаковыми именами «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 за его пост, который дал мне эту идею)