Kus*_*nda 24
使用rsync
:
rsync -a --include='*/' --exclude='*' /some/path/dir/ dir
Run Code Online (Sandbox Code Playgroud)
这将在当前目录中重新创建/some/path/dir
as的目录结构dir
,而不复制任何文件。
由于包含模式,源路径中遇到的任何目录都将在目标上创建,但其他任何目录都将被排除。作为使用-a
( --archive
) 的副作用,您将在目标中的所有子目录上获得与源中相同的时间戳。这也适用于从远程目录创建本地目录结构(反之亦然)。
Siv*_*iva 13
尝试这个,
cd /source/dir/path
find . -type d -exec mkdir -p -- /destination/directory/{} \;
Run Code Online (Sandbox Code Playgroud)
. -type d
递归列出当前路径中的目录。mkdir -p -- /destination/directory/{}
在目的地创建目录。 这依赖于find
支持{}
在参数词中间扩展的a 。
您可以使用find
遍历源结构并调用mkdir
它遇到的每个目录。
此示例使用find
,将您的目录结构从复制foo
到/tmp/another/
( cd foo && find -type d -exec sh -c 'for d do mkdir -p "/tmp/another/$d"; done' sh {} + )
Run Code Online (Sandbox Code Playgroud)
该exec
环路建立了一套目录下foo
,然后将其传递给mkdir
。如果您没有find
理解的版本,则+
可以\;
以牺牲效率为代价使用。替换mkdir
用echo mkdir
,看看会发生什么,没有实际去做。