繁体   English   中英

当 subdir 不存在时,用于递归复制文件和文件夹的 Bash 脚本

[英]Bash script to recursively copy files and folders when subdir is not present

我在目录树下归档了很多项目,其中一些项目中有一个 .git 文件夹。

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

任何帮助将非常感激。

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

a
a/b
a/b/c
a/b/c/d/.git
a/b/c/d/e
a/b/c/d/f/g
a/b/c/e
a/b/d
a/c
b
b/c
...

IIUC,以下find one-liner 将完成这项工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM