当前位置: 首页 > Linux

linux下如何查找同一个文件?

时间:2023-04-06 04:25:14 Linux

大家好,我是良旭。随着电脑的使用,系统中会产生大量的垃圾。最典型的就是同一个文件保存在不同的位置。结果占用了大量的磁盘空间,系统运行速度越来越慢。因此,如果您的计算机空间不足,您可以尝试删除此类文件以释放一些空间。在Linux下,我们可以通过识别文件的inode值来找出系统中的同一个文件。inode是一种数据结构,记录了文件的所有信息,除了文件名和文件内容。如果两个或多个文件具有相同的inode值,即使它们的文件名和位置不同,但它们的内容、所有者和权限实际上是相同的,我们可以将它们视为同一个文件。这种类型的文件实际上就是所谓的“硬链接”。硬链接具有相同的inode值但不同的文件名。软链接其实就是一个快捷方式,指向目标文件,但是有自己的inode值。$ls-lmy*-rw-r--r--4liangxuliangxu228Apr1219:37myfilelrwxrwxrwx1liangxuliangxu6Apr1511:18myref->myfile-rw-r--r--4liangxuliangxu228Apr1219:37mytwin我们无法直接知道同一目录下哪些文件具有相同的inode值,但不难识别。其实我们只要使用ls-i命令,按照inode值排序,就可以直接找到这些文件。$ls-i|排序-n|more...788000myfile<==788000mytwin<==801865Name_Labels.pdf786692neverleavehomeangry920242NFCU_Docs800247nmap-notes这个结果的第一列是对应的inode值。所以从这个结果中,我们可以一眼看出哪些文件的inode值是一样的。如果只是想找到一个文件对应的硬链接文件,我们可以使用find命令,加上-samefile选项可以快速找到。$找到。-samefilemyfile./myfile./save/mycopy./mytwin这些文件都具有相同的inode值。如果你不相信我,你可以使用ls命令查看更多信息:$find。-samefilemyfile-ls7880004-rw-r--r--4liangxuliangxu228Apr1219:37./myfile7880004-rw-r--r--4liangxuliangxu228Apr1219:37./save/mycopy7880004-rw-r--r--4liangxuliangxu228Apr1219:37./mytwin我们可以看到这几个文件名的信息除了文件名不同之外完全一样。细心的朋友可能会注意到第二列(硬链接数)是4,但实际上我们只找到了3个文件,也就是说还有一个文件和他们共享inode值,但是我们通过这个命令没有'找不到它。作为一个懒人,每次都要敲命令好麻烦,直接去脚本里找目录下一样的文件就好了!#!/bin/bash#搜索文件共享inodesprev=""#listfilesbyinodeles-i|sort-n>/tmp/$0#在文件中搜索重复的inode#swhilereadlinedoinode=`echo$line|awk'{print$1}'`if["$inode"=="$prev"];然后grep$inode/tmp/$0fiprev=$inodedone/dev/null7880004-rw-r--r--4liangxuliangxu228Apr1219:37/tmp/mycopy7880004-rw-r--r--4liangxuliangxu228Apr1219:37/home/liangxu/myfile7880004-rw-r--r--4liangxuliangxu228Apr1219:37/home/liangxu/save/mycopy7880004-rw-r--r--4liangxuliangxu228Apr1219:37/home/liangxu/mytwin在这个命令中,我们将错误信息重定向到特殊文件/dev/null,以便搜索一些我们没有权限的路径access,不会有全屏权限被拒绝。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以和我一起把这本电子书做得更完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站