这个问题很相似到这个除了我想保留文件的原始子目录。
例如如果我有
/temp/a/a.txt
/temp/a/a.jpg
/temp/a/b.txt
/temp/b/c.txt
/temp/d/d.txt
/temp/d/d.jpg
/temp/d/e.txt
/temp/f.txt
我想将所有文本文件复制到 /temp2,以便目录结构如下所示:
/temp2/a/a.txt
/temp2/a/a.jpg
/temp2/a/b.txt
/temp2/b/c.txt
/temp2/d/d.txt
/temp2/d/d.jpg
/temp2/d/e.txt
/temp2/f.txt
感谢您的帮助!!
答案1
如果您想要复制整个目录结构,那么只需cp -a /temp /temp2
在/temp2
尚不存在或cd /temp; cp -a . /temp2
目标目录已存在的情况下执行即可。(-a
是 Linux 特定的选项cp
;在其他系统上,您可以使用cp -Rp
递归复制来保留权限。)
如果你只想根据文件名称复制某些文件,请使用同步它有复杂的包含-排除规则;我写了一个这些规则的教程回应在 Unix Stack Exchange 上询问如何做到这一点的问题。
如果要通过其他条件(例如日期)匹配文件,最简单的方法是结合rsync
zsh 的模式匹配规则,例如Marcel Stimberg 对上述问题的回答。
答案2
如果没有更多信息,我能建议的最佳解决方案是:
cp -rp temp temp2