0

我有这样的文件:

all/01/data.xml
all/02/data.xml
all/03/data.xml

我想将所有data.xmls 复制到all目录中。

当然,我可以通过find -execand做到这一点for。但是问题是所有文件都具有相同的名称,并且后者将覆盖以前的文件。

所以我想用子目录名重命名文件。

我如何用 Bash 做到这一点?谢谢。

4

2 回答 2

2
for f in */data.xml; do mv $f  `basename $f .xml``dirname $f`.xml; done
于 2013-09-29T04:37:40.110 回答
0

假设您所有的 data.xml 文件只有 1 个子目录深,这将做到这一点;

$ cd all
$ for x in */data.xml
> do
> f=`echo $x | sed -e 's/\//_/'`
> mv $x $f
> done
于 2013-09-29T04:36:07.230 回答