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 ../../ -- {} +
/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 ../../ -- {} +