Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这样的文件:
all/01/data.xml all/02/data.xml all/03/data.xml
我想将所有data.xmls 复制到all目录中。
data.xml
all
当然,我可以通过find -execand做到这一点for。但是问题是所有文件都具有相同的名称,并且后者将覆盖以前的文件。
find -exec
for
所以我想用子目录名重命名文件。
我如何用 Bash 做到这一点?谢谢。
for f in */data.xml; do mv $f `basename $f .xml``dirname $f`.xml; done
假设您所有的 data.xml 文件只有 1 个子目录深,这将做到这一点;
$ cd all $ for x in */data.xml > do > f=`echo $x | sed -e 's/\//_/'` > mv $x $f > done