【问题标题】:UNIX: copy entire directory structure and only specific file typeUNIX:复制整个目录结构并且只复制特定的文件类型
【发布时间】:2015-08-28 19:58:03
【问题描述】:

如何重新创建整个目录结构并仅复制扩展名为 .txt 的文件(如果存在)。我想复制目录或子目录,即使它是空的。

【问题讨论】:

    标签: shell unix ubuntu posix


    【解决方案1】:

    这是一行命令:)

    rsync -vapEtogR --progress --stats --log-file="log_file_name.txt" --include '*/' --include '*.txt' --exclude '*' source_path/ destination_path/
    

    使用rsync --help 了解所使用的选项。

    【讨论】:

    • 但是,rsync 命令中的选项是重复的,因为-a 已经提供了-rlptgoD
    【解决方案2】:
    cd source-dir
    find . -type d -mindepth 1 -exec mkdir target-dir/{} \;
    

    避免创建目录“.”和错误“没有这样的文件或目录”。

    【讨论】:

    • 酷你来了!但是,如果您想对答案发表评论,请对答案发表评论;)
    【解决方案3】:

    创建目录结构:

    cd source-dir
    find . -type d -exec mkdir target-dir/{} \;
    

    您可以忽略无法创建. 的消息。

    然后,将txt 文件复制到其中:

    find . -type f -name '*.txt' -exec cp {} target-dir/{} \;
    

    【讨论】:

    • 感谢@choroba 的回复。我使用了这个命令 cd source find 。 -type d -exec mkdir /home/superjaggu/Desktop/copy{} \;但这创建了名为“copy”的复制文件夹。 .任何删除 .从副本
    • @Jaggu:你为什么在{}之前删除/
    • mkdir 抛出错误 mkdir:cannot create directory '/home/superjaggu/Dekstop/copy/./a/a4':No such file or directory
    • 我发现了另一种创建目录结构的方法 find ./home -type d -printf "./copy/%P\0" | xargs -0 mkdir -p
    • 将第一个命令中的 mkdir 更改为 mkdir -p 也有帮助。 (我在第二个发现中添加了一个点,一个明显的错字)
    猜你喜欢
    • 2021-05-24
    • 2010-11-04
    • 2016-09-04
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2013-07-18
    相关资源
    最近更新 更多