如何快速找出Linux中的重复文件

如何快速找出Linux中的重复文件,第1张

用uniq,如下,将 1.txt 中 所有 "相邻" 重复行合并成一行,结果存入 2.txt

uniq 1.txt >2.txt如果是想将相邻重复行彻底删掉(而不是合并成一行),可以用

uniq -u 1.txt >2.txt

可以使用vim打开文件,然后通过 vim编辑 中的 /(向后查找)或者 ?(向前查找)来查找相应的字符串

示例:用vim打开/etc/passwd查找admin用户名

vim /etc/passwd

打开文件后,直接输入 /admin 回车即可查找如下图所示:

回车执行,vim查找到后,会标识出来,如下图所示:

另外:使用vim也可以打开可执行程序来查找字符串(在程序没有加壳或者使用其它字符串保护的前提下)。

示例:在test程序中查找hello字符串。

虽然使用vim打开二进制程序文件,显然的是乱码,但是明文字符串依然能查找到,如下图所示:

扩展:在Linux中如果要查找二进程文件即应用程序中的字符串,可以使用反汇编器、调试器等等,比如IDA,就提供强大的字符串查找功能。

getline函数调用时,awk将会把下一条记录读入赋值给$0,因此相当于已经跳到下一行了。

你的程序上面那个,由于在awk中有多次getline,因此一开始把记录定位到第二行,即第一个文件,然后每调用一次"md5sum "name1 | getline记录就跳到了下一行,输出是不会重复的。

而下面的那个程序,没有多次getline调用,awk按行扫描,每次会把当前行的文件名赋值给name2,同时name1又记录了上一次的文件名,因此出现了test01两次,test02两次

事实上,输出和扫描行的对应关系是:

先在BEGIN段跳过两行,当前行为test,name赋值得到test

然后逐行扫描,当前扫描行是test01时, 输出了test test01

当前扫描行是test02时, 输出了 test01 test02

当前扫描行是test02时, 输出了 test02 test03

所以一共出现6行,中间有重复


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8901170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存