通过shell脚本查找*不是*硬链接的文件

Har*_*ikk 4 shell hardlink

给定一个目录,如何查找其中不是硬链接文件的所有文件(以及任何子目录)?或者更具体地说,那些不是具有多个引用的硬链接文件?

基本上我想扫描一个文件夹并返回该目录中的唯一文件列表,包括目录和符号链接(而不是它们的目标).如果可能的话,最好还忽略支持它们的文件系统上的硬链接目录(例如HFS +).

twa*_*erg 16

find 有一个应该有用的选项:

find . -type f -links 1 -print
Run Code Online (Sandbox Code Playgroud)

根据定义硬链接的文件的链接数为2或更大,因此这将显示没有其他链接的所有文件.

  • `-type f` 排除符号链接、目录和其他一些东西。OP 特别希望包含目录和符号链接。目录至少有两个硬链接(一个来自父目录,加上目录自己的“.”链接),再加上每个子目录的“...”链接。 (2认同)

gle*_*man 5

硬链接文件具有相同的inode.您可以使用它stat来打印inode和文件名,并awk仅在第一次出现inode时用于打印文件:

stat -c '%i %n' *csv | awk '!seen[$1]++' | cut -d ' ' -f 2-
Run Code Online (Sandbox Code Playgroud)