我的系统上不同目录中有很多同名的“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感谢他的帖子给了我这个想法)