我的系统在不同目录下有很多相同名称的“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,因为他的文章给了我这个想法)