查找与特定名称匹配的目录并从查找搜索结果的父目录递归复制

查找与特定名称匹配的目录并从查找搜索结果的父目录递归复制

我有这样的目录结构:m/n/o/p/q/r/s/t。

我想找到按名称“r”匹配的目录,并从查找结果的父目录递归复制内容(即本例中的“q/r/s/t” - 使用 'cp 可以实现什么 - rq/r <dir_location>') 到另一个位置。

就像是:

find m/n/o/p -type d -name "r" -exec cp -r "../{}" /<folder_to_copy_into> \;

我尝试过使用 -printf %h 和 -maxdepth 进行实验,但我不确定我的语法是否正确。我不确定我是否应该进入另一个发现以获得我想要的结果。 (目标是仅从 find-results 中的一个父目录递归复制到另一个目录位置)。

只要我能找到名为“r”的目录,我就想将所有内容从 r 的父目录递归复制到新的目录位置。(例如:如果我有 m/n/o/p/q/r/s/t,我希望将“q/r/s/t”递归复制到新的目录位置)。

答案1

您可以将您替换-exec为 bash 命令字符串:

 .... -exec bash -c 'cp -r $(dirname $0) /target/' '{}' \;

请考虑@KamilMaciorowski 的评论:有点不清楚你想要提取什么。所以d1在这样的目录结构中搜索

└ a
  └ b
    ├ c1
    │ └ d1
    │ └ d2
    │ └ d3
    ├ c2
    └ c3

上面的内容将复制并包含c1在内,而不仅仅是.d2d3d1

答案2

这对我有用:

find m/n/o/p -mindepth 1 -maxdepth 1 -type d -exec [ -d {}/r ] ';' -exec cp -r {} <folder_to_copy_into> \;)

相关内容