如何在Linux上的目录中查找所有硬链接
时间:2020-01-09 14:17:08 来源:igfitidea点击:
如何在目录中找到与某个文件有关的所有硬链接。
如何在/backups /目录中查找到/etc/passwd的所有其他硬链接?
如何使用Linux或Unix命令行选项查找到给定文件的所有硬链接?
您可以在Linux,Apple MacOS,FreeBSD和其他操作系统上使用find命令来查找所有硬链接。
如何查找到给定文件的所有硬链接
硬链接不过是物理数据的特定位置。
您可以提供引用同一文件的各种名称。
文件与名称引用相同的inode。
可以如下创建指向foo文件的硬链接:
$ ln foo bar $ ln foo dir2/foobar
在上面的示例中,bar和foobar成为foo文件的另一个名称。
在当前目录中查找foo文件的所有硬链接的语法如下:
find /dir/to/search/ -samefile /path/to/file/name ## To find out all hard links to foo, use this command: find / -samefile foo find / -xdev -samefile foo
例子
如果文件名为/etc/passswd,并且您需要获取/backups /目录下存在的所有硬链接,请运行:
$ find /backups/ -samefile /etc/passwd
输出示例:
/backups/hourly.0/etc/passwd /backups/hourly.4/etc/passwd /backups/hourly.3/etc/passwd /backups/daily.0/etc/passwd /backups/hourly.1/etc/passwd /backups/hourly.2/etc/passwd
如果您不想降级其他文件系统上的目录(例如已挂载一次),请尝试:
$ find /backups/ -xdev -samefile /etc/passwd
在/tmp /目录中查找并删除指向foo文件的所有硬链接
执行以下命令:
$ find /tmp/ -xdev -samefile foo -print0 | xargs -I {} -0 rm -v {}
输出示例:
removed ?/tmp/dir2/foobar? removed ?/tmp/foo? removed ?/tmp/bar?
帮助,-samefile选项由我的find命令执行
查找找到文件的索引节点编号,执行:
$ ls -li fileNameHere $ ls -li /tmp/demo.txt
输出示例:
4065089 -rw-r--r-- 3 Hyman Hyman 8 Feb 26 02:19 /tmp/demo.txt
上面输出的第一列显示文件inode4065089。
现在,备用语法如下,以使用inode 4065089查找名为/tmp/demo.txt的文件的所有硬链接:
$ find /tmp/ -inum 4065089 $ find /tmp/ -xdev -inum 4065089
输出示例:
/tmp/demo.txt /tmp/dir2/file2.txt /tmp/file1.txt
要查找和删除索引号为4065089的文件的所有硬链接,请运行:
$ find /tmp/ -xdev -inum 4065089 | xargs rm -v $ find /tmp/ -xdev -inum 4065089 -print0 | xargs -I {} -0 rm -v {}
如何查找到给定文件名的所有硬链接