大家好,我是良旭。随着电脑的使用,系统中会产生大量的垃圾。通常,同一个文件保存在不同的位置。结果占用了大量的磁盘空间,系统运行速度越来越慢。因此,如果您的计算机空间不足,您可以尝试删除此类文件以释放一些空间。在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|sort-n|more...788000myfile<==788000mytwin<==801865Name_Labels.pdf786692neverleavehomeangry920242NFCU_Docs800247nmap-notes是结果第一列对应的inode值。所以从这个结果中,我们可以一眼看出哪些文件的inode值是一样的。如果只是想找到一个文件对应的硬链接文件,我们可以使用find命令,加上-samefile选项可以快速找到。$find.-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#seachesforfilessharinginodesprev=""#listfilesbyinodels-i|sort-n>/tmp/$0#searchthroughfileforduplicateinode#whilereadlinedoinode=`echo$line|awk'{print$1}'`if["$inode"=="$prev"];thengrep$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中特殊文件,在搜索一些我们没有权限访问的路径时,全屏不会出现permissiondenied。
