Bash - 将所有文件从子目录移动到上层文件夹

Bash - move all files from subdirectories to up folders

/volume1/TVPack/A/Folder1/Folder11/ --> files
/volume1/TVPack/A/Folder2/Folder22/ --> files
/volume1/TVPack/B/Folder3/Folder33/ --> files
(the list goes on)...

我想将所有文件从 Folder11/22 移动到 /volume1/TVPack/A 以及从 Folder33 到 /volume1/TVPack/B 的所有文件 等等 即,向上移动 2 级

我使用的代码是

find /volume1/TVPack/*/ -type f -mindepth 3 -exec mv -- {} /volume1/TVPack/*/ \;

但是这样就把所有的文件都放到了文件夹B,而不是把各自的文件放到A,把各自的文件放到B。

我在任务计划程序上执行此操作,所以我认为我不能使用 mv * .[^.]*

有人知道怎么做吗?

使用-execdir,在执行命令之前cd到每个文件所在的目录。

find /volume1/TVPack/*/ -type f -mindepth 3 -execdir mv -- {} ../../ \;

更好的是,使用 + 而不是 \; 来最小化 mv 命令的数量。

find /volume1/TVPack/*/ -type f -mindepth 3 -execdir mv -t ../../ -- {} +