文件夹在你的浏览器中读取。不上传任何内容,在你下令之前也不会移动任何东西。
关于展平嵌套文件夹
你解压一个压缩包,得到 project/ 里套着 project/,里面又是 src/,最里面才是你真正想要的那四个文件。或者下载下来的东西是一件一个文件夹,每个文件夹里只躺着一个文件。又或者备份还原出的目录结构,对当初写它的机器有意义,此后对谁都没有意义。
展平就是解法:无论埋在第几层,把每个文件都提到最上面。 手动做意味着打开每个文件夹、选中、剪切、返回上级、粘贴,如此反复——然后再一个对话框一个对话框地处理撞名。
这个工具会先把整件事规划好,把每个文件以及它取出后的名字摆给你看,然后要么在页面里完成,要么交给你一个脚本。
难的是名字
把 2023/report.pdf 和 2024/report.pdf 展平,会在同一个文件夹里得到两个 report.pdf,而只有一个能活下来。所以命名规则是一个真正的选择,而不是脚注:
- 只在会撞名时加上文件夹名——默认选项,通常也是你想要的。holiday.jpg 依旧是 holiday.jpg,只有那三个 IMG_0001.jpg 会变成 2023_IMG_0001.jpg 之类。不需要改名的都不会被改
- 总是加上文件夹名——每个文件都把路径折进名字里。样子难看些,但完全可预期,而且原先的位置一直留在文件名上
- 保持原名不变——完全不改名。任何会撞名的都会被拦下,原地不动
用什么连接这一栏决定折进路径时用的字符,所以 2023_report.pdf 或 2023-report.pdf 悉听尊便。
使用方法
- 点击选择要展平的文件夹并选中它。浏览器会请求读取权限
- 挑一个命名规则——每次改动表格都会重画,方便你比较
- 阅读方案:每个文件埋在哪里,取出后叫什么。被改名的会高亮显示
- 按立即把文件提上来,或者下载 .bat / .sh 脚本自己运行
什么都不删,空文件夹也一样
展平会把它清空的那些文件夹留在原地。这是刻意的。
删除一棵目录树,和移动文件是性质不同的行为;把两者捆在一起,就意味着在你还在琢磨文件名的时候,这个工具已经悄悄删掉了目录。所以空壳会留下来,如果你想清掉它们,空文件夹查找会替你找出来——它有自己的预览,也有一份让你先读再运行的脚本。
两次有意识的操作,好过一次悄无声息的操作。
在这里移动,还是用脚本
Chrome、Edge 和 Opera 可以获得对所选文件夹的写入权限,于是文件在页面里就被移动了,无需安装任何东西。浏览器会先征求同意,你也可以随时收回。
Firefox 和 Safari 没有这个能力,因此会拿到一个脚本——Windows 用 .bat,Mac 和 Linux 用 .sh。两者都拒绝覆盖:Windows 的 move 会询问,Mac 和 Linux 的 mv -n 会直接放弃。运行之前先读一遍。
人们用它来做什么
- 把围着几个文件层层套了五层解压出来的压缩包还原回去
- 收拢一件一个文件一个文件夹送来的下载
- 把按日期命名的文件夹里的照片导入统统汇到一处
- 从结构已经失去意义的还原备份里,把文件全部抽出来
- 为一个不会递归进子文件夹的工具准备好素材
- 把按章节导出的结果合并到一个文件夹里
值得一提
- 可在 Windows、macOS、Linux 和 ChromeOS 上使用——它是一个网页,无需安装。它无法在 iPhone、iPad 或 Android 上工作:移动浏览器没有办法把一个文件夹交给网页
- 不上传任何内容。读取、规划和移动全部在页面内完成
- 移动是可逆的——同样的字节换了个位置,永远不会删除任何文件
- 已经在顶层的文件会被放过,而不是移动到自己身上
- 把路径折进名字时,被 Windows 禁止的字符会被替换,所以 a/b 会变成 a-b,而不是一次失败的移动
- Windows 脚本以 chcp 65001 开头,因此带重音或非拉丁字符的文件夹名也能保住
- 超大文件夹以 200,000 个条目为上限,以免页面卡死
- 表格显示前 400 行;脚本则始终包含每一个文件
相关工具
- 空文件夹查找 — 之后再清掉留下的空壳
- 把文件整理进子文件夹 — 反过来的活儿:扁平的文件夹需要结构时
- 批量重命名文件 — 都聚到一处之后再把名字理顺
- 重复文件查找 — 展平之后常常会冒出你不知道的副本