【问题标题】:Recursively search directories moving specified file type from one location to another preserving directory structure递归搜索目录,将指定文件类型从一个位置移动到另一个保留目录结构
【发布时间】:2009-02-24 19:50:13
【问题描述】:

有没有办法指定一个目录(比如“C:\images”)并将每个 .jpg 文件从那里移动到另一个目录(比如“D:\media”)但保留目录结构(所以如果文件是“C:\images\paintball\july\07\headshot.jpg”,移动后会是“D:\media\paintball\july\07\headshot.jpg”)?

我正在使用 cygwin(但如果也可以使用 DOS,我会很乐意使用)。

【问题讨论】:

    标签: shell file automation dos


    【解决方案1】:

    是的。

    在保留目录结构(有一个开关)的同时对 *.jpg 文件进行 tar 归档,然后将其解压缩到目标目录。应该是单线。

    【讨论】:

      【解决方案2】:
      ( cd /cygdrive/c/images
      tar --create --file - . ) | ( cd /cygdrive/d/media
      tar --extract --file - )
      

      在某些版本的 tar 中还有一个 --directory 选项,您可以使用它来避免子shell之间管道的复杂性,但我自己从不使用它,所以我可能会遗漏一些东西:

      tar --create --file - -C /cygdrive/c/images . | tar --extract --file - -C /cygdrive/d/media
      

      如果您需要更多功能/灵活性,请花时间研究 rsync。

      由于您使用的是 Windows,因此您还可以查看 xxcopy。它非常适合这类东西和其他许多东西。

      【讨论】:

        【解决方案3】:

        您也可以使用 xcopy 命令,如本例所示(旧为目录):

        xcopy cvs_src\*.jpg old /e/i/h/y/d/exclude:files_to_exclude
        

        【讨论】:

          【解决方案4】:

          感谢 XCOPY 解决方案,它解决了我的类似问题,所以我想我会将详细信息分享给其他需要它的人。

          我想要一个目录(和子目录)中不属于特定类型的所有文件的列表(不是副本),例如 *.jpg。但是 DIR 命令没有排除功能。所以我:

          1. 创建了一个名为 exclist.txt 的文件,其中包含一行“.jpg”
          2. 运行命令“xcopy c:\files c:\test /exclude:exclist.txt /l /d /e /h /i /y > found.txt”
          3. 在记事本中打开 found.txt 以查看非 jpg 文件列表

          注意 XCOPY /l 参数,它列出了要复制的文件而不复制它们。由于 XCOPY 在“列表模式”下执行,因此不会创建目标文件夹 c:\test,也不会复制任何文件。 "> found.txt" 将 XCOPY 命令的输出保存到文件 found.txt,而不是在屏幕上显示结果。

          【讨论】:

            猜你喜欢
            • 2016-04-04
            • 1970-01-01
            • 1970-01-01
            • 2017-07-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-26
            相关资源
            最近更新 更多