比较同一目录中的文件
Compare files with each other within the same directory
我们有 20 个名为 file*.txt
的文件都在一个目录中:
file1.txt
file2.txt
...
file20.txt
在同一目录中还有其他文件,我们需要忽略:
someotherfile.csv
somemore.txt
etc.pdf
需要查看文件内容是否相同。尝试使用diff
,显然失败了:
diff -r ./file*.txt ./file*.txt`
如果您只是比较两个文件,请尝试:
diff "$source_file" "$dest_file" # without -q
或
cmp "$source_file" "$dest_file" # without -s
为了查看假定的差异。
你也可以试试 md5sum:
md5sum "$source_file" "$dest_file"
如有任何建议请回复...!
如果您只想快速查看 "are the same" 答案,我会使用;
md5sum file*.txt
把这个脚本放在有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
。你可以弄清楚如何避免这种情况。
一个相对简单的一行可能就足够了:
测试于 OSX、
md5 -q file*.txt | sort -u
如果您看到多行输出,则文件不相同
Linux 似乎有一套与 OSX 不同的工具。上面的 (md5) 看起来不错,但不起作用,因为 md5
是 md5sum
和 returns 每行检查文件的文件名。
我在 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
什么的,你可以找到行数。我个人会走这条路。
sum * | sort -r | uniq -d -w 5
将列出所有重复项,但不会列出一式三份等。
我们有 20 个名为 file*.txt
的文件都在一个目录中:
file1.txt
file2.txt
...
file20.txt
在同一目录中还有其他文件,我们需要忽略:
someotherfile.csv
somemore.txt
etc.pdf
需要查看文件内容是否相同。尝试使用diff
,显然失败了:
diff -r ./file*.txt ./file*.txt`
如果您只是比较两个文件,请尝试:
diff "$source_file" "$dest_file" # without -q
或
cmp "$source_file" "$dest_file" # without -s
为了查看假定的差异。
你也可以试试 md5sum:
md5sum "$source_file" "$dest_file"
如有任何建议请回复...!
如果您只想快速查看 "are the same" 答案,我会使用;
md5sum file*.txt
把这个脚本放在有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
。你可以弄清楚如何避免这种情况。
一个相对简单的一行可能就足够了:
测试于 OSX、
md5 -q file*.txt | sort -u
如果您看到多行输出,则文件不相同
Linux 似乎有一套与 OSX 不同的工具。上面的 (md5) 看起来不错,但不起作用,因为 md5
是 md5sum
和 returns 每行检查文件的文件名。
我在 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
什么的,你可以找到行数。我个人会走这条路。
sum * | sort -r | uniq -d -w 5
将列出所有重复项,但不会列出一式三份等。