只复制文件夹而不复制文件?

Sha*_*non 20 directory cp

有没有办法复制整个目录,但只有文件夹?我的目录中有一个损坏的文件,它导致我的硬盘出现故障。

因此,与其将损坏的文件复制到另一个硬盘,我只想复制文件夹,因为我有搜索数百个文件夹的脚本,我不想手动创建所有文件夹。

我确实搜索了 cp 手册,但什么也没看到(我可能错过了)

假设我的故障硬盘上有这个结构:

dir1
    files
    dir2
        files
        files
        dir4
dir3
files
Run Code Online (Sandbox Code Playgroud)

我想要的只是目录结构,而不是任何文件。

所以我最终会在新的硬盘上:

dir1
    dir2
        dir4
dir3
Run Code Online (Sandbox Code Playgroud)

希望有人知道一些技巧!

Oli*_*Oli 19

如果要镜像目录骨架并且不复制任何文件:

find -type d -links 2 -exec mkdir -p "/path/to/backup/{}" \;
Run Code Online (Sandbox Code Playgroud)

这里发生了什么:

  • 查找只是选择目录
  • 我们-links 2用来查找最深的目录
  • mkdir -p 将在此过程中创建任何丢失的目录。

我已经这样做了,而不是find -type d -exec mkdir -p "/path/to/backup/{}" \;因为它会切断整个对接mkdir电话。我们可以通过一个小测试快速证明这一点。这是测试树,然后是我运行的比较两个命令的内容:

$ tree
.
??? dir1
?   ??? dir2
?   ?   ??? dir3
?   ??? dir7
?   ??? dir8
??? dir9
    ??? dir0

$ pr -m -t <(find -type d) <(find -type d -links 2)
.                               ./dir1/dir8
./dir1                          ./dir1/dir2/dir3
./dir1/dir8                     ./dir1/dir7
./dir1/dir2                     ./dir9/dir0
./dir1/dir2/dir3
./dir1/dir7
./dir9                  
./dir9/dir0 
Run Code Online (Sandbox Code Playgroud)

这只会在具有数千个目录的实际解决方案中变得更好。