【问题标题】:UNIX, how to maintain directory structure?UNIX,如何维护目录结构?
【发布时间】:2010-11-10 16:57:19
【问题描述】:

我想从非空目录树bar1 创建一个空目录结构bar2。 bar1 和 bar2 都处于同一层次级别。如何有效地使用mkdir,以便自动创建中间目录?

  1. 从 bar1 创建一个目录列表,如有必要,使用查找和排序。
  2. 使用awk,从列表中删除所有分支,这样我就可以只在叶子上运行`mkdir。
  3. 使用列表运行mkdir,复制bar1的目录结构

【问题讨论】:

  • 为什么只需要识别叶子?

标签: linux unix


【解决方案1】:
cd bar1
find . -type d -exec mkdir -p '../bar2/{}' \;

【讨论】:

  • 这不会删除叶子,它会为每个目录运行 mkdir
  • 呃。 s/leaves/branches/ 在我的评论中。也就是说,对于目录结构 bar2/a/b/c,它将运行三个 mkdir 而不是一个
  • 感谢您的所有回答和 cmets。他们非常有帮助。
【解决方案2】:

您的问题(如何仅列出叶目录)的难点是asked before on SO。您可以在那里使用find/awk 组合并在每个结果上运行mkdir -p:

[bar1] $ find . -type d | sort | awk '$0 !~ last {print last} {last=$0} END {print last}' | xargs -Ix mkdir -p ../bar2/x

【讨论】:

    【解决方案3】:

    您可能想改用rsync:

    rsync -r -f '+ */' -f '- *' bar1 bar2
    

    也就是说,更详细:

    rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      相关资源
      最近更新 更多