将数千个文件从search结果复制到一个目录

我的系统在不同目录下有很多相同名称的“data.xml”文件。

基本的Windowssearch很容易find所有这些。 我希望能够search这些,find他们,并将其复制到一个目录,所以有名为data_1.xml等。

事实上,他们都在一个目录是我的目标。

我已经尝试过使用Teracopy来完成复制的繁重工作,但它并没有正确地重命名这些文件。 有这样的东西有任何工具吗?

为了完整起见,下面是一个在CMD shell中运行的基于Windows的解决scheme:

@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 

以前build议的解决scheme在我的情况下失败,当目标目录包含文件和目录名称中带有空格和非拉丁字符。 事实certificate,Windows(Vista&以上)带有一个命令行工具,用于强大的副本,称为Robocopy 。 用法很简单:

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

工作得很好。 (我要感谢来自makeuseof.com的 Chris Hoffman,因为他的文章给了我这个想法)