gpt4 book ai didi

linux - 比较脚本帮助

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:57 25 4
gpt4 key购买 nike

我正在尝试编写一个 Bash 脚本,该脚本将遍历一组缓存目录并对内容进行一些比较。 (我想找到对于我正在从事的项目而言差异最小的两个)。

结构是有一个根目录;之后是两个子目录;下最多有 52 个目录(a AA b BB 等);在每个目录下都有数量可变的目录,其中的内容实际位于其中。基本上:

root >> a/b >> a/AA/b/BB/.../z/ZZ >> <some hex-named directory>

所以我需要到达最后一个级别,然后对该目录中的文件(内容始终命名相同)和所有其他缓存文件运行 diff 并找出最相似的文件是什么。

顶部的两个目录永远不会更改名称,所以这很容易。这些目录下的目录遵循设定的格式(它们按顺序从“a”和“AA”开始到“z”和“ZZ”),因此我可以为此硬编码一个数组。我认为完成最后一个级别的最佳方法是运行“ls > dirList”,然后将 dirList 读入数组,并使用它进入目录,并使用相同的算法在每个其他缓存事物上通过循环运行 diff(是的,运行时间将很糟糕,但从长远来看,它将节省大量时间)。

  • 这是一个合理的方法吗?有没有更好、或者更有效的方法?
  • 还有,有没有办法让 diff 来计算不同的行数?

我知道这有点长,但任何帮助将不胜感激。谢谢!

最佳答案

假设根目录中的 2 个目录是要比较的目录(a 和 b),我会尝试这样的操作:

min_diff=9999 # big value
file2remember=''

cd a || return $?
find * -type f |while read f
do
n=`diff "$f" "../b/$f"|wc -l`
if [ $n -lt $min_diff ]
then min_diff=$n ; file2remember="$f"
fi
done

echo $file2remember

注意:我没有 Linux 或 unix 机器来测试它。

关于linux - 比较脚本帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600340/

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