仅对具有特定名称的文件夹使用 Fdupes 比较校验和吗?

仅对具有特定名称的文件夹使用 Fdupes 比较校验和吗?

让我在不考虑任何背景的情况下写这篇文章,希望尽可能简单。

也许最简单的描述方式是:

  1. 在 /shoots/*/ 中搜索所有名为“copy 1”、“copy 2”、“copy 3”的文件夹
  2. 列出所有文件夹
  3. 在每个文件夹上运行“fdupes -d -n”,不是递归'

根据 @infixed 之前的回答,我对此采取了更实际的方法 (比较相对于彼此路径的校验和的文件吗?)。注意:我不太了解Linux。以下命令很可能是错误的。

  1. cd /volume1/Modelshoots/shoots/
  2. ls
    // 列出 /shoots/ 内的所有文件夹
  3. cd /*/ each
    // 列出 /shoots/ 内每个文件夹内的所有文件夹
  4. grep -v“复制 1”列表.txt>脚本.sh
  5. grep -v“复制 2”列表.txt>脚本.sh
  6. grep -v "copy 3" list.txt > script.sh
    // 排除所有文件夹,但包含名为“copy 1”、“copy 2”、“copy 3”的文件夹
  7. 'fdupes -d'在每一行/路径前面添加
    // 以便fdupes -d对包含“copy #”的每个路径运行命令。
  8. 执行脚本

进一步说明:

我想fdupes删除我叔叔的大量照片和备份中的重复相同文件。我只想扫描名为“副本 1”、“副本 2”、“副本 3”等的文件夹,这些文件夹在“shoots”文件夹内的各种文件夹中调整大小。但是不是‘副本#’内的文件夹。

请参阅此图以了解更多信息:
在此处输入图片描述

根文件夹 (/shoots/) 和每个 shoot 文件夹 (模型 A、模型 B 等) 均未处理,其他包含的文件夹 (selection) 也未处理。唯一需要扫描的文件夹是名为“副本 1”、“副本 2”等的文件夹。但是:不再更深!因此,不应扫描“副本 1”内的文件夹“selection”或“副本 2”内的文件夹“副本 1”!

答案1

虽然这不是一个完全解决你的问题的方法,如果它更复杂一点,你可以使用杰杜佩斯-X 诺斯特或者-X onlystr选项来按子字符串进行过滤。但是,我注意到——对于您的确切用例——它比这容易得多:

cd /volume1/Modelshoots/shoots/
jdupes */copy*/
jdupes -dN */copy*/

这将非递归扫描与模式 /volume1/Modelshoots/shoots/ 匹配的每个目录中的每个文件/复制/ 你会注意到不包括拍摄 // 或射击 //copy*/*/ 目录。无需构建文件列表、摆弄中间命令和弄乱子字符串;只需告诉 jdupes 不要跟随子目录。第一次调用会显示匹配项列表;第二次调用会在没有提示的情况下删除所有重复项。

相关内容