当subdir不存在时,Bash脚本以递归方式复制文件和文件夹

时间:2015-09-19 12:23:31

标签: bash directory copy

我在目录树下存档了很多项目,其中一些项目中包含.git文件夹。

我想要做的是递归地将这些文件和目录复制到新目的地,保持当前结构 - 除了那些包含.git文件夹的目录,在这种情况下脚本应该运行一个命令(让我们说“ echo“,我稍后会更改它”,然后是文件夹名称,而不创建或复制它。

非常感谢任何帮助。

编辑:我会尝试更好地解释自己:我需要复制每个文件和目录,除了那些包含.git的文件和目录,应该跳过它们并将它们的路径传递给另一个命令。在这个例子中,应该完全跳过路径a / b / c / d及其子文件夹,并且应该使用echo显示a / b / c / d(为了简洁起见,稍后我会用不同的命令替换它): / p>

obj1

1 个答案:

答案 0 :(得分:0)

IIUC,以下find单行将完成工作:

find . -type d -mindepth 1 -maxdepth 1 -exec sh -c "test -e '{}/.git' && echo not copy '{}' || cp -r -- '{}' /tmp/copy-here " \;