我在./src/下有一个目录树
我在./work/下有另一个匹配的目录树
我试图复制src中的所有文件来工作,同时保持目录结构,并排除以.java结尾的所有文件。
这是我迄今为止的尝试:
find src -type f ! -iname *.java -exec cp {} work \;
这几乎可以工作,但是所有的文件都被放到工作的顶层,而不是放到目录树的正确位置。
我怎样才能做到这一点? (在Mac OS X 10.9上使用bash)
tar cCf /source/path - --exclude "*.java" . | tar xCf /target/path -
rsync -a --exclude='*.java' src/ work/
您可以多次使用{} 。 所以:
find src -type f ! -iname '*.java' -exec cp {} work/{} \;
将尝试和保存path(并失败,因为该目录可能不存在 – 但你可能可以这样做:
-exec mkdir -p `dirname {}` \;
但是,对于你在做什么,你可能想要使用焦油:
find src -type f ! -iname '*.java' | xargs tar cvf - | ( cd work && tar xvf - )