Linux下寻找相同文件

ByteCodeWizard
• 阅读 522

随着电脑的使用,系统里将产生很多垃圾,最典型的就是同一份文件被保存到了不同的位置,这样导致的结果就是磁盘空间被大量占用,系统运行越来越慢。
Linux下寻找相同文件
所以如果你的电脑空间告急的话,可以试着去删除这样的文件,释放一些空间。在 Linux 下,我们可以通过识别文件的 inode 值来找出系统中的相同文件。

inode 是一个数据结构,记录了文件所有信息,除了文件名和文件内容。如果两个或多个文件具有相同的 inode 值,即使它们的文件名不一样,位置不一样,它们的内容、所有者、权限其实都是一样的,我们可以将其视有相同文件。

这类型的文件其实就是所谓的「硬链接」。硬链接具有相同的 inode 值,但文件名不一样。而软链接其实就是快捷方式,它指向目标文件,但有着自己的 inode 值。

$ ls -l my*-rw-r--r-- 4 liangxu liangxu   228 Apr 12 19:37 myfilelrwxrwxrwx 1 liangxu liangxu     6 Apr 15 11:18 myref -> myfile-rw-r--r-- 4 liangxu liangxu   228 Apr 12 19:37 mytwin

我们无法直接知道同一目录下有哪些文件是有相同的 inode 值,但要识别起来也不难。其实我们只要使用 ls -i 命令,再以 inode 值进行排序,就可以直接找到这些文件。

$ ls -i | sort -n | more ... 788000 myfile    <== 788000 mytwin    <== 801865 Name_Labels.pdf 786692 never leave home angry 920242 NFCU_Docs 800247 nmap-notes

在这个结果的第一列里,就是对应的 inode 值。所以从这个结果里我们一眼就可以看出来,哪些文件具有相同 inode 值。

如果你只是想找到一个文件的对应硬链接文件,我们可以使用 find 命令,再加个 -samefile 选项即可快速找到。

$ find . -samefile myfile./myfile./save/mycopy./mytwin

这些文件都是有相同的 inode 值,不信的话可以再使用 ls 命令来查看更多信息:

$ find . -samefile myfile -ls 788000    4 -rw-r--r--   4 liangxu    liangxu      228 Apr 12 19:37 ./myfile 788000    4 -rw-r--r--   4 liangxu    liangxu      228 Apr 12 19:37 ./save/mycopy 788000    4 -rw-r--r--   4 liangxu    liangxu      228 Apr 12 19:37 ./mytwin

我们可以看到,除了文件名之外,这几个文件名的信息完全一样。细心的朋友可能会注意到,在第2列(硬连接数)是4,而实际上我们找出来的文件只有3个,这说明还有一个文件与他们共享 inode 值,只是我们通过这条命令没有找出来而已。

作为一个懒人,每次敲命令多麻烦,直接上脚本找出目录下的相同文件!

#!/bin/bash# seaches for files sharing inodesprev=""# list files by inodels -i | sort -n > /tmp/$0# search through file for duplicate inode #swhile read linedo    inode=`echo $line | awk '{print $1}'`    if [ "$inode" == "$prev" ]; then        grep $inode /tmp/$0    fi    prev=$inodedone < /tmp/$0# clean uprm /tmp/$0

运行结果:

$ ./findHardLinks 788000 myfile 788000 mytwin

当然了,你还可以使用 find 命令,根据 inode 值,找到系统里所有相同文件。

$ find / -inum 788000 -ls 2> /dev/null 788000   4 -rw-r--r--   4 liangxu   liangxu    228 Apr 12 19:37 /tmp/mycopy 788000   4 -rw-r--r--   4 liangxu   liangxu    228 Apr 12 19:37 /home/liangxu/myfile 788000   4 -rw-r--r--   4 liangxu   liangxu    228 Apr 12 19:37 /home/liangxu/save/mycopy 788000   4 -rw-r--r--   4 liangxu   liangxu    228 Apr 12 19:37 /home/liangxu/mytwin

在这条命令里,我们将错误提示重定向到 /dev/null 这个特殊文件里,这样在搜索一些我们没有权限访问的路径时,不会满屏的 permission denied

以上就是良许教程网为各位朋友分享的Linux下寻找相同文件。

以上就是良许教程网为各位朋友分享的Linux相关知识。

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
4年前
Linux——定时清空日志内容和删除日志文件
前言最近在做性能压测试,会生成大量的日志,导致后续越压越慢,最终磁盘空间占满之类的问题。老是要手动删除日志文件,为避免此类问题发生,编写一个Linux日志定时清理的脚本,一劳永逸。1、shell脚本创建脚本并赋权touch/home/mppay/autotruncatelog.shchmod u
Stella981 Stella981
4年前
Linux运行级别和root密码找回
文章目录Linux运行级别root密码找回详细步骤Linux运行级别基本介绍Linux系统有7个运行级别,级别从06,具有不同功能。这些级别在/etc/inittab文件里指定。这个文件是init程序寻找的主要文件,最先运行的服务是放在/etc/rc.d目录下的文件。在大多数的L
Stella981 Stella981
4年前
Linux应急响应(四):盖茨木马
0x00前言Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装。木马得名于其在变量函数的命名中,大量使用Gates这个单词。分析和清除盖茨木马的过程,可以发现有很多值得去学习和借鉴的地方。0x01应急场景
Stella981 Stella981
4年前
Linux系统删除文件夹下所有文件
!(https://oscimg.oschina.net/oscnet/up7d5d4ae17890de6c42fae9460472f704b21.JPEG)这篇文章来为大家介绍一下如何在Linux系统下删除文件,当Linux系统使用时间过长以后,难免会产生一些垃圾文件,这些文件除了会占用磁盘空间之外还会降低系统的运行效率,所以长时间运行后
Wesley13 Wesley13
4年前
Java垃圾回收调优
Java垃圾回收调优博客分类:jvmjava在Java中,通常通讯类型的服务器对GC(GarbageCollection)比较敏感。通常通讯服务器每秒需要处理大量进出的数据包,需要解析,分解成不同的业务逻辑对象并做相关的业务处理,这样会导致大量的临时对象被创建和回收。同时服务器如果需要同时保存用户状态的话,又会产生很多永久的对象,比如用户sess
Stella981 Stella981
4年前
Android 性能优化之减少UI过度绘制
什么是过度绘制(OverDraw)在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次。这样就会浪费大量的CPU以及GPU资源。过度绘制最直观的影响就是会导致APP卡顿。还好系统有提供GPU过度绘制调试工具会在屏幕上用不同的颜色,来表明一个像素点位被重复绘制的次数。
3A网络 3A网络
3年前
一次 minerd 肉鸡木马的排查思路
在日常使用Linux系统服务器时,如果系统安全维护方面做的不够规范和严谨,很容易导致主机被黑客植入恶意木马病毒被当做肉鸡。以后就是一次肉鸡木马病毒的排查过程,有助于运维服务器时遇到此情况时进行针对性的排查和修复。【问题现象】Linux主机CPU跑满,或者使用服务器越来越慢,以及收到报警信息提示服务器有对外恶意扫描。【问题原因】这种状况在出现时通
3A网络 3A网络
3年前
理解 virt、res、shr 之间的关系(linux 系统篇)
理解virt、res、shr之间的关系(linux系统篇)前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过t
绣鸾 绣鸾
2年前
BuhoCleaner for Mac缓存垃圾清理工具
是一款在Mac电脑上运行的清洁软件。它的界面简洁,易于使用,能够快速扫描Mac电脑上的垃圾文件、重复文件、大型文件等,帮助用户清理不需要的文件,释放磁盘空间。该软件的主要功能包括:垃圾文件清理:可以清理系统缓存、DMG文件、系统日志文件和应用缓存文件等;重
绣鸾 绣鸾
2年前
BuhoCleaner for Mac(优化清理工具)
是一款在Mac电脑上运行的清洁软件。它的界面简洁,易于使用,能够快速扫描Mac电脑上的垃圾文件、重复文件、大型文件等,帮助用户清理不需要的文件,释放磁盘空间。该软件的主要功能包括:垃圾文件清理:可以清理系统缓存、DMG文件、系统日志文件和应用缓存文件等;重
ByteCodeWizard
ByteCodeWizard
Lv1
人言落日是天涯,望极天涯不见家。
文章
2
粉丝
0
获赞
0