【问题标题】:How can i copy only header files in an entire nested directory to another directory keeping the same hierarchy after copying to new folder复制到新文件夹后,如何仅将整个嵌套目录中的头文件复制到另一个保持相同层次结构的目录
【发布时间】:2012-04-16 15:14:44
【问题描述】:

我有一个目录,里面有很多头文件 (.h) 和其他 .o 和 .c 文件以及其他文件。 这个目录里面有很多嵌套目录。我只想将头文件复制到单独的目录中,并在新目录中保留相同的结构。

cp -rf oldDirectory newDirectory 将复制所有文件。 我只想复制头文件。

【问题讨论】:

标签: linux shell cp


【解决方案1】:
(cd src && find . -name '*.h' -print | tar --create --files-from -) | (cd dst && tar xvfp -)

如果您只想硬链接文件而不是复制它们,您可以使用 cpio 执行类似的操作,但之后可能需要一些 mv'ing。如果您有大量数据并且不介意(或需要!)共享,这可能会快得多。如果 dst 需要在其中包含 src,它会感到困惑 - 如果它不仅仅是一个副作用:

  1. 查找 src -name '*.h' -print | cpio -pdlv dst
  2. mv dst/src/* dst/.
  3. rmdir dst/src

【讨论】:

  • 听起来不错...我认为 cpio 是我一直在寻找的东西。 -d 选项。
【解决方案2】:

这个对我有用:

rsync -avm --include='*.h' -f 'hide,! */' . /destination_dir

来自here

【讨论】:

    【解决方案3】:
    cp -rf oldDirectory/*.h newDirectory
    

    或类似的东西(取决于实际路径)

    find oldDirectory -type f -name "*.h" -print0 | xargs -file cp file newDirectory
    

    【讨论】:

    • 第一个解决方案仅在深度 1 处复制 .h 文件。如果我们有深度 2 和 3 的头文件等等。
    猜你喜欢
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2014-09-22
    • 2017-08-14
    • 2015-05-05
    • 2017-04-11
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多