分享

如何用 Everything 批量操作多级文件夹 | 实用技巧

 azure1944 2023-09-05 发布于上海

我在 Windows 中经常需要做跨文件夹的操作。

每当我需要对跨文件夹的多个文件进行操作时,我都会深深感觉跨文件夹操作的不便。系统在这方面的功能只有一个搜索,往往无法解决遇到的问题。

所以这时候我们就需要一些辅助工具对目录文件进行批量操作,如果不考虑安装第三方文件管理工具,Everything 应该是最好的选择了。这款文件搜索工具,相信不少读者都有所耳闻。得益于搜索原理的不同,Everything 要比系统自带的搜索快上百倍,1 秒钟就能完成十余万个文件的索引,同时内存占用低,会自动对文件夹内容实时更新。

这些优点让它成为了 Windows 平台上最好用的文件搜索工具。

入门技巧:快速提取多层文件夹

有关多个文件夹的操作一般都不会太简单。这里就有个略显复杂的例子,大家可以先想想怎么解决——前段时间,我从 Google Photos 里导出了 60 GB 左右的照片存档,下载时的每个压缩包是 1 GB 大小,总共有 61 个压缩包。

然后问题来了,我发现 Google Photo 的数据存储方式挺特殊的,导出的压缩包名称为 takeout-2018XXXX-序号 ,每个压缩包中都有一个 takeout 文件夹,里面还有 Google 相册 文件夹,打开才能看到日期文件夹,再打开才是照片本身。从根目录到照片之间,有 4 级文件夹。

如果我不借助任何工具,想从这些文件夹中把所有的照片提取到同一个文件夹,我就得手动点开这 61 个文件夹,进入 4 级目录,然后将日期文件夹移动到同一个目录中……粗略估算,可能要点上两三百下鼠标,拖动几十次。过程无聊又乏味,这样的重复工作量显然是难以接受的。

我想在一个视图中看到所有的文件夹,然后一次性操作。

令人头疼的多级文件夹

这里就用到了 Everything 的一个小技巧,可以利用它来解决上面这个问题:

  1. 在 Everything 的搜索框中输入 "文件夹路径",或者「右键文件夹空白处 → 在 Everything 中搜索」,就会直接展示该目录下所有的文件。

  2. 对搜索结果进行名称排序,将同名的文件夹排在前面。这样结果中就会将多级目录下的不同文件夹全部按顺序列出来。

  3. 将这些「以日期命名」的文件夹全部拖出来(指的是最里面一层文件夹,不要选中具体文件和 takeout 文件夹)。

这样,所有日期文件夹就会被放在同一级目录中了,同名文件夹会被系统自动合并。

    为了演示方便,我只将一组图片合并

    简单的三步,就把这项繁复的任务给完成了。其实这种情况,不止出现在 Google Photos 的导出工作中,当你从笔记应用中导出数据、做文案归档工作、设计图纸查询时,也会面对大量的多级文件夹。对那些身处不同文件夹中的小文件,就可以采用这种方式来对单个文件夹进行批量处理。

    不过学会了这招,还只是刚刚入门而已。

    进阶技巧:查找删除重复文件

    「如果我不需要按日期分类,想把所有的照片放在同一个文件夹中,是不是只要把照片文件直接拖出来就行了呢?」

    这个操作看上去似乎没有问题,不过在实际操作时,可能会出现更复杂的情况,比如文件重名。

    重名文件引发的麻烦

    在 Google Photos 的例子中,多个文件夹中的文件可能有同样的文件名。比如 001 压缩包中有 image.jpg 的照片,002、003 压缩包中可能也会有叫 image.jpg 的照片。如果直接拖出来就会出现文件名冲突,同时无法很快确定这几张照片是不是同一张。

    Windows 在复制时如果遇到重名情况时会让你选择「替换」「跳过」或者「比较信息」,比较后你可以选择保留两个文件,勾选左下角的「跳过具有相同日期和大小的文件」,可以勾选全部文件来保留两个版本。复制少量文件时你可以通过这个方法来搞定重名文件的复制。

    Windows 默认的解决文件冲突方法

    但是,复制界面其实是相当脆弱的,在文件数量巨大 + 硬盘读写速度较慢的情况下,这简直是一道鬼门关。

    我批量复制 20 G 左右的大量小文件时,就发现了不少问题:

    • 首先这个界面弹出时间是不确定的,多数情况下会在移动文件的后半段出现,如果是挂机复制,电脑前没有人,就会长时间停在这个界面,影响复制进度。

    • 其次是稳定性差,由于我那 20 G 小文件中有不少文件重复,载入对比界面时白屏了半天。好不容易进入了比较界面,对比了好久文件,确认后进度条又不动了……最后只能 Ctrl + Alt + Delete 结束进程。

    • 最后是无法断点续传,结束进程就意味着前功尽弃,要从头复制了,同时还有损坏文件的可能。实在是令人头疼。

    能不能提前比较文件?

    「那么,能不能在复制出问题之前,就把这个问题解决呢?」

    可以,那我们就需要先找出那些名字相同的文件,筛选流程是这样的:

    1. 对文件进行判断 ,对比文件名、文件大小,或者手动对比。

    2. 如果是同一个文件 → 删除重复文件。

    3. 如果不是同一个 → 批量修改文件名。

    第一步:筛选多个文件夹中的相同文件

    网上仅有的一些教程会让大家利用 Everything 自带的搜索关键词 dupe: 将重复文件筛选出来。

    但实际上,这里配合另一个关键词 sizedupe: 一起使用效果更佳,这个关键词的作用是查找出文件大小相同的文件。两个不同文件的名称可以相同,但是文件大小一般是不同的。所以需要用 sizedupe: dupe: 来筛选出文件名相同且文件大小相同的文件(尽管不是非常严谨,但在日常生活中已经足够确认这是重复文件了。)

    搞清楚了筛选思路,接下来就好办多了。在 Everything 的搜索框中输入 "文件夹路径" sizedupe: dupe:,该目录下的重复文件都会显示在结果中。

    这里如果想仅显示文件,可以带上一个 file: 关键词(或是用 folder: 关键词,仅显示文件夹)。

    第二步:删除重复文件

    很快筛选出了文件,马上出现了另一个问题:由于 Everything 主打搜索功能,并未专门提供一键删除重复文件的功能。

    「那是不是只能一个一个选中,然后手动删除呢?」

    完全不用,因为这些是重复的文件,直接把所有结果直接拖进同一个文件夹,然后直接选择「跳过这些文件」,就可以让这些文件仅保留一份了。

    直接跳过重复文件,就会只复制一份出来了

    第三步:对重名的文件进行重命名

    接下来要对名字相同的文件进行重命名。

    由于在第一步中已经把重复文件清空了,现在剩下的文件都是唯一的。你可以在 Everything 中搜索 "文件夹路径" dupe: 来找到重名文件,然后选中并右键 → 重命名给他们批量重命名。

    Everything 自带的重命名

    Everything 自带了一个简陋的批量重命名工具,可以把原文件名中的一部分取出来做替换,也支持正则表达式,但不支持用文件的属性(比如创建日期、拍摄日期等)来命名。所以这里我更推荐一些专用的命名工具来给文件重命名。

    当然,如果你不介意这个问题,也可以像上面一样直接拖进一个文件夹,然后选择「让我决定每一个文件」,保留所有的文件,Windows 会自动给这些文件后面加上 (1) (2) (3)。

    通过这种方式,极大地缓解了 Windows 自带的复制功能的不稳定性,也间接的解决了弹窗时间不确定性断点续传的问题。当你需要对大量小文件进行批量操作却为糟糕的复制体验发愁时,就可以采用这 3 步来解决问题。

    高阶技巧:学会使用组合关键词

    一般使用 Everything 的场景是搜索单一文件,直接搜索文件名就可以了。但在这篇文章中,我们将 Everything 作为跨文件夹的筛选器来使用时,仅从文件名做筛选就不合适了。这里我们要学会一些关键词来找到特定文件。

    Everything 支持非常多的关键词,你可以直接在软件的帮助 → 搜索语法中找到。如果不容易理解,还可以在 Everything 的官方文档中找到更详细的解释。

    如果只是把这些关键词列举出来,那这篇文章的作用就很小了。这里要介绍的是一些好用的关键词组合,学会利用多个关键词来找到需要的文件才是重点。

    在介绍之前,为了熟练掌握关键词之间的关系,要先学习一下「与、或、非、分组」这几个最基础的逻辑。它们就像四则运算中的加减乘除和括号,掌握了这些,才能进行更复杂的筛选。

    • 与:  空格

    • 或:| 竖线(通常在回车键的上方)

    • 非:! 感叹号

    • 分组:<> 类似于四则运算中括号的作用

    • 搜索词组:"" 引号

    引号的作用要多提一句,它是为了让多个单词变成一个词组。比如直接搜索 App Store,Everything 会将中间的空格理解为「与」就变成了搜索的两个条件。而搜索 "App Store" 就会显示带有 App Store 这个词组的结果了。这个问题在英文环境下比较明显。

    如果细心一点,你会发现搜索路径时也会加上引号,这是为了防止在 C:\Program Files 这样的目录中搜索时,被错误理解为「在 C:\Program 目录中搜索带有 Files 的文件」。

    (一)查找大型文件

    先从简单的开始讲起。大文件会占用许多硬盘容量,磁盘空间不足时应该首先处理这些大型文件。用下面这些关键词查找完毕后,按文件大小排序,就可以找到电脑中最大的那些文件了。

    • 查找大于 128 MB 的文件:size:gigantic

    • 查找小于 10 KB 的文件:size:tiny

    • 不想记单词就用:size:>128MB(具体数字可以自己定义)

    你也可以用 size:empty 来找到 0 KB 的空文件,但是空文件通常是有特殊作用的,不建议删除。

    (二)利用通配符和开头字符进行模糊查询

    如果有时候忘记了文件的一部分名字,印象中只有「2018、支出、表」这几个字了,除了可以用空格来表示文件中同时含有这几个字符,还可以用 * 和 ? 作为通配符来查询文件。

    • 匹配 0 个或者多个字符:*

    • 匹配 1 个字符:?

    用通配符可以进行模糊搜索。这里要注意,想使用 ? 就要和 * 一起用,否则就不会匹配更多内容了。

    实际使用案例:在以日期命名的文件中搜索 201?-12-??-*,就可以找到历年的 12 月份都做了些啥事。

    • 匹配开头的字符:startwith:

    除了简单模糊匹配,还可以固定开头的字符,不过在冒号后无法使用通配符。但可以加上空格增加通配符条件,作为搜索的两个条件使用。

    实际使用案例:用搜索 startwith:2018-12 来搜索以 2018-12 为开头的所有文件。

    (三)限定结果数量

    有时候我们需要在 10000 个文件中找到前 100 个,再按创建时间排列。这就需要用到限定结果数量的关键词了。

    • 限定搜索结果的数量:count:

    实际使用案例:我只想看到前 100 个文件,用 count:100 就可以让结果只显示 100 个文件了。

    需要提醒一下,搜索结果视图的排序方式会对 count 的结果产生影响。可以把搜索框理解为全局文件筛选器,结果视图的排序方式是列表内文件的筛选器。「搜索」「排序」的顺序不同,也会对结果产生影响,在具体使用时需要注意。

    (四)查找近期修改的文档

    如果在工作中经常和文档打交道,可以用下面两个关键词筛选出近期修改过、创建过的文件。dm:是修改时间,dc: 是创建时间。未建立相应索引时,创建时间的搜索速度较慢,推荐使用 dm:

    • 查找今天修改的文件:dm:today

    • 查找本周创建的文件:dc:thisweek

    如果 doc: 结果中出现了一些你不需要的 HTML、ini 等文件,可以用「非」来排除一些。或者干脆用 *.doc 来查找特定的文件类型。

    • 查找文档文件(包括纯文本文件等许多格式):doc:

    • 仅搜索 Word 文档的两种方法:ext:doc,*.doc

    • 排除 HTML 文件的两种方法:!ext:html,!*.html

    这些关键词可以任意组合使用,来尽可能快地找到所需文件。

    实际使用案例:用 dm:thismonth ext:xls|ext:xlsx 找到这个月修改过的所有表格文件。

    (五)查找部分路径做增量备份

    我会定期在移动硬盘中备份文档,为了节约时间,我想做一次增量备份,不再去完整复制已有的内容。

    • 用 \ 来搜索部分路径:01-文档库\

    比如,本地有一个 D:\01-文档库\ 目录,移动磁盘中的备份目录为 F:\Backup\01-文档库\ 。只输入 01-文档库\ 就会让这两个文件夹中的结果全部显示出来。

    • 查询结果中不重复的文件:!dupe:

    这是上面查询重复文件 dupe: 的反向应用,用来查看两个文件夹之间的区别。

    际使用案例 1:输入 01-文档库\ !dupe: 然后把本地的新增文件复制到移动硬盘中,就可以轻松完成增量备份了,这个情况适用于比较冷门的文件名。

    实际使用案例 2:如果出现了其他干扰项,也可以使用「或」| 仅对这两个文件夹做筛选,需要多打几个字:D:\Design\作品库\|F:\作品库 !dupe:

    (六)子文件筛选

    子文件筛选其实也经常用到,Everything 提供了四个关键词,来对子文件进行筛选:

    • 搜索包含匹配文件名文件或文件夹的文件夹:child:<filename>

    • 搜索包含有指定数目子文件夹或文件的文件夹:childcount:<count>

    • 搜索包含有指定数目文件的文件夹:childfilecount:<count>

    • 搜索包含有指定数目子文件的文件夹:childfoldercount:<count>

    这四个描述是我直接引用官网文档的,因为描述的都非常准确,删改一个字就可能改变它的原意。第一个是通过子文件的文件名筛选,后面三个都是通过子文件(夹)的数量进行筛选

    实际使用案例:我需要给历史比较久远的文件进行归档,想知道 D:\Documents 下有多少个文件夹包含了 100 个以上的文件,我就可以用childfilecount:>100 来搜索结果。

    而用到 child: 关键词是因为我给每个文件夹都放了一个 .ico 图标,然后批量设置文件夹图标。但手动查看总会有遗漏,为了知道哪个文件夹里还没有图标就需要一个一个点开。如今在 Everything 中搜索 D:\Documents !child:ico 就可以看到这些子文件夹中有哪些还没有图标。

    (七)不在结果中显示特定属性文件

    有时候搜索出的结果太多,你可以利用下面这些关键词来去除那些不需要的文件。

    • 不显示系统文件:!attrib:s

    • 不显示隐藏文件:!attrib:h

    注意不要单独使用,最好是在已有结果中用它们筛选。因为这两个关键词需要遍历每一个文件的属性,会耗费比较长的时间。

    你也可以全局应用这两项,在「工具 → 选项 → 排除列表」中设置后,就会排除整个电脑中所有的系统文件和隐藏文件而不用每次都手动输入了。

    还有这些不怎么实用的关键词

    虽然 Everything 提供了这么多关键词,其中的一些看上去很有用……但实际使用起来根本不是那么一回事。所以下面这些关键词没有必要记住它们,找找更好用的替代品或是做一些设置吧。

    长耗时的搜索关键词

    点名批评文件内容搜索类:content:<text>。尽管用 content: 可以查找文件内容,但由于没有提前建立内容索引,它的查询速度实在慢得离谱。我在 500 多个文档文件中搜索一个词组,等了 1 分多钟才出现结果(官网也提示了搜索内容非常慢)。用 Everything 的一大原因就在于速度极快,如果搜索一次这么耗时,不如去选用其他工具。这类耗时较长的关键词都是不实用的。

    可以通过更简单的方式实现的关键词

    这类关键词可以通过更简单的方式进行表达,比如 fsi:<index> 是让你指定盘符的,比如 fsi:0 是 C 盘、fsi:1是 D 盘……以此类推。但实际上你只要用 C:\ 和 D:\ 来表示就可以了,Windows 是不允许文件名中带有 : 和 的,所以使用时这两者没有区别,后者更容易表达。

    可以通过设置开启的功能

    除了前面提到的 doc: ,还有 zip:audio:video: 这些关键词可以筛选文件类型。这些还是挺实用的,但其实还有更直观的方式来筛选。开启「查看→筛选器」,就可以在搜索框的右边看到一个用于选择文件的类型的筛选工具。

    总结

    尽管市面上有专门的文件对比工具,利用 Everything 查找重复文件可能不是最好的选择,但由于它的筛选速度实在是太出色了,我还是愿意在 Everything 中做这些偶尔需要做的任务,而不是去从头寻找、安装、掌握一个新工具的使用方法。

    我们学习使用一个工具的时候,首先是从需求出发,解决现有的问题就好。接着再去找找有没有更深入的方法。当学习并熟悉一套筛选方式之后,其实不仅是记住了一些关键词这么简单。而是会自然而然地从这套筛选方法中学会很多思路。想办法去使用「非」逻辑,一个关键词就会产生两种截然相反的结果;考虑文件自身有哪些特点,找出这个特点去筛选通常可以找到规律,这类思考无处不在。

    所以最关键的是掌握筛选的思路,批量处理文件夹时就会变得异常简单。

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多