<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>文件管理 on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/</link>
        <description>Recent content in 文件管理 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Wed, 06 May 2026 09:23:09 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>fdupes 怎么控制删除顺序？按目录优先级保留重复文件</title>
        <link>https://www.knightli.com/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</link>
        <pubDate>Wed, 06 May 2026 09:23:09 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</guid>
        <description>&lt;p&gt;用 &lt;code&gt;fdupes&lt;/code&gt; 删除重复文件时，如果有 &lt;code&gt;a&lt;/code&gt;、&lt;code&gt;b&lt;/code&gt;、&lt;code&gt;c&lt;/code&gt; 三个目录，并且希望优先保留 &lt;code&gt;a&lt;/code&gt;，其次保留 &lt;code&gt;b&lt;/code&gt;，最后删除 &lt;code&gt;c&lt;/code&gt; 中的重复文件，关键不在于写一个复杂规则，而在于目录输入顺序。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; 在非交互删除模式下，会保留每组重复文件中最先出现的文件，删除后续发现的重复项。因此目录参数要按“保留优先级从高到低”排列。&lt;/p&gt;
&lt;p&gt;也就是说，想实现“先删 c，再删 b，最后尽量保留 a”，命令应该写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;扫描顺序是 &lt;code&gt;a -&amp;gt; b -&amp;gt; c&lt;/code&gt;。当三个目录中存在相同文件时，&lt;code&gt;a&lt;/code&gt; 里的文件会先被发现并保留，&lt;code&gt;b&lt;/code&gt; 和 &lt;code&gt;c&lt;/code&gt; 中重复的文件会被删除。如果只有 &lt;code&gt;b&lt;/code&gt; 和 &lt;code&gt;c&lt;/code&gt; 有重复文件，则保留 &lt;code&gt;b&lt;/code&gt;，删除 &lt;code&gt;c&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;参数含义&#34;&gt;参数含义
&lt;/h2&gt;&lt;p&gt;常用参数如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r&lt;/code&gt;：递归扫描子目录。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt;：删除重复文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-N&lt;/code&gt;：与 &lt;code&gt;-d&lt;/code&gt; 配合使用，不进入交互确认，自动保留每组重复文件中的第一个，删除其余文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，自动删除重复文件的基本格式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN 目录A 目录B 目录C
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;目录越靠前，保留优先级越高；目录越靠后，越容易被删除。&lt;/p&gt;
&lt;h2 id=&#34;先预览再删除&#34;&gt;先预览再删除
&lt;/h2&gt;&lt;p&gt;直接使用 &lt;code&gt;-dN&lt;/code&gt; 会删除文件，建议先预览重复文件分组：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出结果会按重复文件分组展示。每组中靠前的文件，就是非交互删除时更可能被保留的文件。&lt;/p&gt;
&lt;p&gt;也可以查看统计信息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rm a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果数据重要，建议先把结果保存下来人工检查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c &amp;gt; duplicates.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认每组重复文件的排列顺序符合预期后，再执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;子目录怎么处理&#34;&gt;子目录怎么处理
&lt;/h2&gt;&lt;p&gt;只要开启 &lt;code&gt;-r&lt;/code&gt;，&lt;code&gt;fdupes&lt;/code&gt; 会递归扫描传入目录下的所有文件。决定保留优先级的，仍然是命令中路径出现的先后顺序。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这表示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dir_a&lt;/code&gt; 的优先级最高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_b&lt;/code&gt; 次之。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_c&lt;/code&gt; 最低。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 &lt;code&gt;dir_a/sub1/file.txt&lt;/code&gt; 和 &lt;code&gt;dir_c/sub1/file.txt&lt;/code&gt; 内容相同，会保留 &lt;code&gt;dir_a&lt;/code&gt; 下的文件。如果 &lt;code&gt;dir_a/x/y/file.txt&lt;/code&gt; 和 &lt;code&gt;dir_c/file.txt&lt;/code&gt; 内容相同，也会优先保留 &lt;code&gt;dir_a&lt;/code&gt; 下的文件。&lt;code&gt;fdupes&lt;/code&gt; 比较的是文件内容，不要求文件名或目录层级完全一致。&lt;/p&gt;
&lt;h2 id=&#34;精确控制子目录优先级&#34;&gt;精确控制子目录优先级
&lt;/h2&gt;&lt;p&gt;如果只传父目录，子目录内部的扫描顺序由 &lt;code&gt;fdupes&lt;/code&gt; 的遍历逻辑决定。多数情况下，这已经够用。但如果你想让某个子目录拥有更高优先级，就要把它显式写在前面。&lt;/p&gt;
&lt;p&gt;例如，希望优先保留 &lt;code&gt;dir_a&lt;/code&gt;，然后保留 &lt;code&gt;dir_b/special&lt;/code&gt;，再处理 &lt;code&gt;dir_b&lt;/code&gt; 的其他内容，最后处理 &lt;code&gt;dir_c&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b/special dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样 &lt;code&gt;dir_b/special&lt;/code&gt; 会先于 &lt;code&gt;dir_b&lt;/code&gt; 被扫描。之后扫描 &lt;code&gt;dir_b&lt;/code&gt; 时，&lt;code&gt;special&lt;/code&gt; 里的文件已经被记录，整体优先级就会高于 &lt;code&gt;dir_b&lt;/code&gt; 的其他部分。&lt;/p&gt;
&lt;p&gt;这个写法适合下面这种需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; 是最重要的基准目录。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt; 中某个子目录比 &lt;code&gt;b&lt;/code&gt; 的其他内容更重要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; 主要作为低优先级备份目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;路径顺序可以继续扩展：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c/keep-first c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;规则仍然只有一个：越靠前，越优先保留。&lt;/p&gt;
&lt;h2 id=&#34;目录很多时使用列表&#34;&gt;目录很多时使用列表
&lt;/h2&gt;&lt;p&gt;如果有很多目录和子目录，手动写一长串命令容易出错。可以把路径按优先级写入一个文本文件，比如 &lt;code&gt;folders.txt&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b/sub_important
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c/sub_1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后用 &lt;code&gt;xargs&lt;/code&gt; 传给 &lt;code&gt;fdupes&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果路径中可能包含空格，更稳妥的方式是使用空字符分隔：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tr &lt;span class=&#34;s1&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt; &amp;lt; folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -0 fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;需要注意的边界&#34;&gt;需要注意的边界
&lt;/h2&gt;&lt;p&gt;第一，&lt;code&gt;fdupes&lt;/code&gt; 比较的是文件内容，而不是文件名。如果两个文件名完全不同，但内容一致，也会被识别为重复文件。&lt;/p&gt;
&lt;p&gt;第二，如果 &lt;code&gt;a&lt;/code&gt; 目录内部本身就有重复文件，使用 &lt;code&gt;fdupes -rdN a b c&lt;/code&gt; 时，&lt;code&gt;a&lt;/code&gt; 内部靠后的重复项也可能被删除。这个命令表达的是“按整体扫描顺序保留最先出现的文件”，不是“绝对不删除 a 中任何文件”。&lt;/p&gt;
&lt;p&gt;第三，默认情况下，&lt;code&gt;fdupes&lt;/code&gt; 不会跟随符号链接。如果需要处理软链接相关文件，要先确认是否需要加 &lt;code&gt;-s&lt;/code&gt;，以及这样做是否符合你的数据安全预期。&lt;/p&gt;
&lt;p&gt;第四，&lt;code&gt;fdupes&lt;/code&gt; 只删除重复文件，不负责清理空目录。删除完成后，如果 &lt;code&gt;b&lt;/code&gt;、&lt;code&gt;c&lt;/code&gt; 中留下了空文件夹，可以再运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find b c -type d -empty -delete
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;更安全的操作习惯&#34;&gt;更安全的操作习惯
&lt;/h2&gt;&lt;p&gt;如果目录里是重要数据，不建议一上来就执行 &lt;code&gt;-rdN&lt;/code&gt;。更稳的流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先运行 &lt;code&gt;fdupes -r a b c&lt;/code&gt; 查看重复分组。&lt;/li&gt;
&lt;li&gt;确认每组中排在前面的文件确实应该保留。&lt;/li&gt;
&lt;li&gt;再执行 &lt;code&gt;fdupes -rdN a b c&lt;/code&gt; 自动删除。&lt;/li&gt;
&lt;li&gt;删除后检查是否需要清理空目录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你非常担心误删 &lt;code&gt;a&lt;/code&gt; 中的文件，可以先只对低优先级目录做更小范围的清理，或者把结果导出后人工筛选。&lt;code&gt;fdupes&lt;/code&gt; 的目录顺序很好用，但它不是权限隔离规则；只要路径被纳入扫描，路径内部的重复文件就可能参与删除判断。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;用 &lt;code&gt;fdupes&lt;/code&gt; 按优先级删除重复文件，核心就是把“想保留的目录”放在前面，把“优先删除的目录”放在后面。&lt;/p&gt;
&lt;p&gt;想保留 &lt;code&gt;a&lt;/code&gt;，再保留 &lt;code&gt;b&lt;/code&gt;，优先删除 &lt;code&gt;c&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;想让某个子目录优先级更高，就把它单独写在父目录前面：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;记住一句话就够了：&lt;code&gt;fdupes -dN&lt;/code&gt; 会保留先出现的重复文件，删除后出现的重复文件。目录顺序，就是你的保留优先级。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
