【问题标题】:count number of files with same content in 2 different folders in shell script计算shell脚本中2个不同文件夹中具有相同内容的文件数
【发布时间】:2015-12-13 10:43:06
【问题描述】:

我的 unix 中有 2 个文件夹,分别命名为 folderA 和 folderB,每个文件夹有 5 个文件

FolderA              FolderB
file1                file1
file2                file2
file3                file3
file4                file4
file5                file5

假设两个文件夹中的file1、file2内容相同

我需要输出为“2个目录有2个内容相同的文件和3个不同内容的文件”

另外两个目录中的文件名相同,并且两个目录中的文件数量相同(无特殊情况)。 我做了这样的事情

diff -U 0 /FolderA /FolderB | grep -v ^@ | wc -l

我得到的输出为 22,我认为这是针对所有文件中的所有差异。 不知何故,我需要获取每个文件的差异并写入 if 条件以获取计数。我对 Unix 还很陌生,所以无法弄清楚。

【问题讨论】:

    标签: bash shell unix


    【解决方案1】:

    获取不同的文件

    diff -qrs dir1 dir2 | grep differ | wc -l
    

    获取相同的文件

    diff -qrs dir1 dir2 | grep identical | wc -l
    

    【讨论】:

    • 哇..真棒它的工作。我想将它分配给一个变量并打印。所以我这样做了。 ** a = $(diff -qrs dir1 dir2 | grep different | wc -l ) echo "The files that different is $a" **.如果您能帮助我解决这个问题,请将其标记为答案。感谢您宝贵的时间和精力。感谢您的帮助。
    • 要将其分配给变量,只需将命令包含在 backtics (" ` ") 中。看看(cyberciti.biz/faq/…
    • 感谢@Nuetrino 的宝贵时间和帮助
    【解决方案2】:
    #!/bin/bash
    
    f1="FolderA"
    f2="FolderB"
    
    cd "$f1" || exit 1
    for i in file*; do if diff "$i" "../$f2/$i" >/dev/null; then ((same++)); else ((diff++)); fi; done
    
    echo "$same files with same content and $diff files with different content"
    

    输出:

    2个相同内容的文件和3个不同内容的文件

    【讨论】:

    • 对不起,我没有尝试这个。感谢您的时间和精力
    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2016-12-26
    • 2018-12-10
    • 2020-07-17
    • 1970-01-01
    • 2015-09-27
    相关资源
    最近更新 更多