我的文件是这样的:
all/01/data.xml
all/02/data.xml
all/03/data.xml
我想将所有data.xml
复制到all
目录。
我当然可以find -exec
和for
执行此操作。但问题是所有文件都具有相同的名称,后者将覆盖以前的文件。
所以我想用子目录名重命名该文件。
我如何使用Bash做到这一点?感谢。
答案 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