简体   繁体   中英

How to find all files which are basically soft or hard links of other directories or files on linux?

How could I get the list of all linked files on my system or from a certain directory. I used to create links but they became unmanageable with time. I want the list of all such links from a directory. Can anyone help?

Finding symlinks is easy:

% find . -type l

Finding hard links is tricky, because if a subdirectory of the directory in question also has subdirectories then those increase the hard link count. That's how subdirectories are linked to their parents in UNIX (it's the .. entry in each subdirectory).

If you only want to find linked files (and not directories), this will work:

% find . -type f \! -links 1

This works because a file that does have hard links will have a link count > 1, and unlinked file has a link count == 1, hence this command looks for all files whose link count <> 1

Alternatively, on newer versions of find you could use:

% find . -type f -links +1

This works for the same reason as above; however, newer versions of find can take +n or -n instead of just a number. This is equivalent to testing for greater than n or less than n, respectively.

find / -xdev -samefile filename

@OP, If you have GNU find, you can find hard links using -printf "%n" , eg

find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
 echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
 # if 2 or more files have the same inode number, then they are hard links. 
 # you can therefore count how many $inum that are the same and determine those hard links, which 
 # you have to try doing yourself.
done

请参阅此处https://www.gnu.org/software/findutils/manual/html_node/find_html/Hard-Links.html或将Alnitak和amber_linux答案组合到find -L /where/to/search -samefile /some/link/to/file查找指定文件的所有硬链接和软链接。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM