我们在一个目录中有20个名为file*.txt
的文件:
file1.txt
file2.txt
...
file20.txt
在同一目录中我们还有其他文件,我们需要忽略它们:
someotherfile.csv
somemore.txt
etc.pdf
需要查明文件的内容是否相同。试图使用diff
,显然失败了:
diff -r ./file*.txt ./file*.txt`
答案 0 :(得分:4)
如果你只是想要一个快速视觉"是相同的"回答,我会用;
md5sum file*.txt
答案 1 :(得分:2)
相对简单的单行可能就足够了:
在OSX上测试,
md5 -q file*.txt | sort -u
如果您看到多行作为输出,则文件不一样
答案 2 :(得分:0)
如果您只是比较两个文件,请尝试:
diff "$source_file" "$dest_file" # without -q
或
cmp "$source_file" "$dest_file" # without -s
为了看到所谓的差异。
你也可以试试md5sum:
md5sum "$source_file" "$dest_file"
如有任何建议请回复......!
答案 3 :(得分:0)
将此脚本放在具有file*.txt
并运行
#!/bin/bash
FILES=./file*.txt
for filename in $FILES; do
for other in $FILES; do
if [ "$filename" != "$other" ]
then
cmp -s $filename $other
retval=$?
if [ $retval -eq 0 ]
then
echo "$filename $other are same"
fi
fi
done
done
它会同时打印file1.txt file3.txt are same
和file3.txt file1.txt are same
。你可以弄清楚如何避免这种情况。
答案 4 :(得分:0)
Linux似乎拥有与OSX不同的工具集。上面的(md5)看起来很不错,但不起作用,因为md5
是md5sum
并且返回每行上已检查文件的文件名。
我在RH linux上的版本:
首先创建相同的文件:
for i in `seq -w 1 20` ; do echo one > test${i}.txt ; done
然后运行:
md5sum *.txt | cut -d ' ' -f 1 | sort -u
使用| wc -l
或其他内容,您可以找到行数。我亲自走这条路。
答案 5 :(得分:0)
sum * | sort -r | uniq -d -w 5
将列出所有重复项,但不列出重复项,依此类推。