将搜索结果中的数千个文件复制到一个目录

将搜索结果中的数千个文件复制到一个目录

我的系统上不同目录中有很多同名的“data.xml”文件。

基本的 Windows 搜索可以轻松找到所有这些。我希望能够搜索这些内容,找到它们,并将它们复制到名为 data_1.xml 等的目录中。

我的目标就是将它们全部放在一个目录中。

我尝试使用 Teracopy 来完成繁重的复制工作,但它无法正确重命名文件。有没有可以解决此类问题的工具?

答案1

只是为了完整性,这里有一个在 CMD shell 中运行的基于 Windows 的解决方案:

@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

答案2

@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

答案3

先前建议的解决方案在我的情况下,当目标目录包含名称中带有空格和非拉丁字符的文件和目录时,它会失败。事实证明,Windows(Vista 及更高版本)附带了一个用于可靠复制的命令行工具,名为Robocopy.使用方法很简单:

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

效果很好。(我要感谢克里斯·霍夫曼makeuseof.com感谢他的帖子给了我这个想法)

相关内容