gpt4 book ai didi

linux - 使用 bash 递归查找具有相同名称但实际上不同的文件的最佳方法?

转载 作者:IT王子 更新时间:2023-10-29 01:22:29 34 4
gpt4 key购买 nike

我在嵌套文件结构中有大约 15000 个图像,其名称是 SKUS。我需要确保没有具有相同 SKU 的文件实际上是不同的文件。

例如,如果我有两个或多个名为:MYSKU.jpg 的文件,我需要确保它们之间没有差异。

在 bash 命令中执行此操作的最佳方法是什么?

最佳答案

我不想为你完全解决这个任务,但这里有一些你可以尝试和整合的有用成分:

find /path -type f   # gives you a list of all files in /path

你可以像这样遍历列表

for f in $(find /path -type f -name '*.jpg'); do
...
done

现在您可以考虑在循环中需要收集的东西了。我建议

base=$(basename $f)
full_path=$f
hash=$(echo $f | md5sum | awk '{print $1}')

您现在可以将此信息存储在一个文件的三列中,这样每一行都包含您需要了解的有关文件的所有信息,以查找重复项。

由于您没有解释需要如何处理重复项,这里只是提供如何发现它们的建议。然后由您决定如何处理它们。

鉴于我们上面获得的列表,您可以存储它的两个副本:一个只是按基名排序,另一个按基名排序不包括重复项:

sort -k2    list.txt | column -t > list.sorted.txt       
sort -k2 -u list.txt | column -t > list.sorted.uniq.txt

这里我假设基本名称在第二列

现在运行

diff list.sorted.txt list.sorted.uniq.txt

查看同名文件。从每一行中,您现在可以提取 MD5 校验和以验证它们是否真的不同以及完整路径以执行某些操作,例如 mvrmln

关于linux - 使用 bash 递归查找具有相同名称但实际上不同的文件的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24195874/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com