如何使用该子目录的名称重命名所有子目录中的文件?

时间:2013-09-29 04:30:29

标签: linux bash

我的文件是这样的:

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

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

我当然可以find -execfor执行此操作。但问题是所有文件都具有相同的名称,后者将覆盖以前的文件。

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

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

2 个答案:

答案 0 :(得分:2)

for f in */data.xml; do mv $f  `basename $f .xml``dirname $f`.xml; done

答案 1 :(得分:0)

这样做,假设你的所有data.xml文件只有1个子目录深度;

$ cd all
$ for x in */data.xml
> do
> f=`echo $x | sed -e 's/\//_/'`
> mv $x $f
> done