bash - 将具有特定名称的目录递归复制到维护结构的新位置

标签 bash macos copy posix

似乎这个问题之前已经在某个地方解决过,但我似乎找不到它。找到了这个,但 --parents 似乎不适用于 MacOS。

Copying part of a directory structure to a new location

我正在尝试将给定名称的文件夹及其内容复制到维护文件夹结构的新位置。

示例...将结果src复制到dest

src\ --
   folder1\ --
      file1.txt
      file2.txt
      file3.txt
      results\ --
         results1.txt
         results2.txt
   folder2\ --
      file1.txt
      file2.txt
      file3.txt
      results\ --
         results1.txt
         results2.txt
   folder3\ --
      file1.txt
      file2.txt
      file3.txt
      results\ --
         results1.txt
         results2.txt

我想以这个结束

dest\ --
   folder1\ --
      results\ --
         results1.txt
         results2.txt
   folder2\ --
      results\ --
         results1.txt
         results2.txt
   folder3\ --
      results\ --
         results1.txt
         results2.txt

最佳答案

如果您位于 src 目录中并且 dest 文件夹存在,则可以运行以下命令将所有目录和子目录递归复制到 dest 中。如果 dest 不存在,请在运行循环之前创建它。

for dir in *
do   
  if [ -d $dir ]
  then    
    mkdir ../dest/$dir
    for subdir in $dir/*
    do  
      if [ -d $subdir ]
      then      
        cp -r $subdir ../dest/$subdir
      fi     
    done
  fi
done

关于bash - 将具有特定名称的目录递归复制到维护结构的新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171284/

相关文章:

macos - 在命令模式下将按键重新映射到 <Esc> 不起作用

macos - 用于使用多个条件查找文件的 OSX 终端命令

mysql - 将MySQL数据库复制到另一台机器

bash - x | 之间的区别y 和 y <(x) 在 bash 中?

bash - 有没有办法编写 ghci session 脚本?

objective-c - 如何计算文件夹的大小。 (此尺寸必须与 Finder 一致。)

copy - Cassandra:快速加载大数据

windows - 将 txt 文件中列出的文件复制到另一个目录中

linux - #!/bin/bash 可执行文件带有参数问题

linux - 将命令的输出作为位置参数传递给 Linux shell 脚本中的脚本文件