/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 * .[^.]*
有人知道怎么做吗?
答案 0 :(得分:2)
在执行命令之前,使用-execdir
,即cd到每个文件所在的目录。
find /volume1/TVPack/*/ -type f -mindepth 3 -execdir mv -- {} ../../ \;
更好的是,使用+
代替\;
来最小化mv
命令的数量。
find /volume1/TVPack/*/ -type f -mindepth 3 -execdir mv -t ../../ -- {} +