用 find 和 mv 把多层子文件夹的文件摊平

一条命令把所有子文件夹里的文件移到顶层文件夹。

macOS文件中风险
运行 find -mindepth 2 -type f -exec mv -n {} . ,即可把嵌套文件全部上移到当前目录。

01命令

命令
$ cd ~/Desktop/MessyFolder && find . -mindepth 2 -type f -exec mv -n {} . \;

02作用说明

-mindepth 2 会跳过顶层的文件让它们原地不动;mv -n 遇到两个子文件夹里有同名文件时会拒绝覆盖,多余文件留在原地。想只摊平某类文件,把条件改成 -iname "*.jpg" -type f;摊平后留下的空文件夹用 find . -type d -empty -delete 一并删除。

03风险

风险中风险
!注意: 不同子文件夹的同名文件会冲突,-n 参数会让多余文件留在原处而不是被覆盖。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • find – Walk a file hierarchy
    ss64.com · technical · 2026-09-17
    依据: find -mindepth 2 -type f matches files below the top level; -exec mv -n {} . moves each one up without overwriting.

最后验证: 2026-09-18 · 分类: 文件与文件夹

06相关方案