gpt4 book ai didi

perl - 比较两个目录的常规文件差异

转载 作者:行者123 更新时间:2023-12-04 05:27:31 26 4
gpt4 key购买 nike

需要比较两个目录并检查两个目录中的每个文件是否有相同名称的文件,如果出现相同名称则检查文件是否具有相同的内容,如果是,则打印>文件<。如果文件名称相同但内容不同 如果文件不在目录 2 中,但在目录 1 <<< file1,对于目录 2 但不在目录 1 中的文件,同样是 >>> file2 .
我遇到了麻烦,当我测试文件名称是否相同时,我的代码甚至没有进行比较。

#!/usr/bin/perl -w 
use File::Basename;

@files1 = `/usr/bin/find $ARGV[0] -print`;
chop @files1;
@files2 = `/usr/bin/find $ARGV[1] -print`;
chop @files2;

here:
for ($i=1; @files1 >= $i; $i++) {

for ($x=1; @files2 >= $x; $x++) {

$file1 = basename($files1[$i]);
$file2 = basename($files2[$x]);

if ($file1 eq $file2) {

shift @files1;
shift @files2;

$result = `/usr/bin/diff -q $files1[$i] $files2[$x]`;
chop $result;

if ($result eq "Files $files1[$i] and $files2[$x] differ") {

print "< $file1 >\n";
next here;
}
else {

print "> $file1 <\n";
}
}
else {

if ( !-e "$files1[$i]/$file2") { print ">>> $file2\n";}
unless ( -e "$files2[$x]/$file1") { print "<<< $file1\n";}
}
}
}

最佳答案

尝试使用这个:

diff -aqr /dir1 /dir2

或:
#!/bin/bash

for f;
for g; do
[[ "$f" != "$g" ]] &&
cmp &>/dev/null "$f" "$g" || echo "$f is different of $g"
done
done

使用此
./script dir1/* dir2/*

关于perl - 比较两个目录的常规文件差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022563/

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