使用 find 移动具有特定条件的文件

使用 find 移动具有特定条件的文件

如何编写一个查找脚本,将特定目录中的文件向上移动两层,但前提是这些文件嵌套在该特定目录下?例如...我的 ipcamera 以非常糟糕的方式将文件保存到我的 NAS。它像这样嵌套。

    /volume1
     /ipcamera
      /04302020
       /dav
        /01
         /010000[m]01m01s.dav
         /010202[m]01m04s.dav
        /02
         /020000[m]01m19s.dav
      /04312020
       /dav
        /03
         /030000[m]02m01s.dav
         /030601[m]04m04s.dav
        /08
         /080000[m]01m11s.dav
etc....

我想将所有这些 .dav 文件移至日期文件夹。它们位于上两层。我假设类似这样的操作会起作用。

简而言之,日期目录下的所有 dav 文件都应向上移动两个文件夹。之前已移动且现在位于日期目录中的所有 dav 文件都不应再次向上移动两个文件夹(将来运行时)

find /volume1/ipcamera -iname '*.dav' -exec mv '{}' ../../ \;

但我的问题是,虽然它在第一次运行时技术上可以正常工作,但后续运行会将 04302020 目录中的所有文件再次向上移动两级。我如何限制它,以便只移动 /volume1/ipcamera 下至少两个目录的文件,以便随着日期的变化它可以自我调整(不触及日期文件夹中的任何 *.dav 文件(仅触及子目录中的 *.dav 文件)。

相关内容