D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

Re: [LUG] Find hard links

 

Steve Marvell wrote:
> Simon Williams wrote:
> 
>> I've got some files which I have been hard linking to save time and 
>> space. Now I'm trying to reorganise those files, but I don't know what 
>> links to what.
>>
>> Is there some command which will list all the files pointing to the same 
>> data?
> 
> Not that I know of, so I wrote this little script of pleasure.
> 
> Steve
> 
> 
> #! /usr/bin/perl 
> 
> use File::Find;
> 
> my $dir = $ARGV[0] || '.';
> 
> my $nodes;
> 
> sub wanted {
> 
>   my ($inode,$nlink) = (lstat($_))[1,3];
> 
>   return unless -f && $nlink > 1;
> 
>   push(@{$$nodes{$inode}}, $File::Find::name); 
> }
> 
> File::Find::find({wanted => \&wanted}, $dir);
> 
> print map { "@$_\n" } values %$nodes;

Thankyou very much, that's very useful. However, I have no knowledge of 
perl and so don't know how it works. I was also hoping for something 
which would let me specify a file and it would go find all the other 
links to that data (perhaps given a dir to look in).

Would I be right in thinking that the only way to get such a list is to 
check every file and see where it lives? Or is there a list of pointers 
to data somewhere?

Thanks again
Simon

-- 
The Mailing List for the Devon & Cornwall LUG
http://mailman.dclug.org.uk/listinfo/list
FAQ: http://www.dcglug.org.uk/linux_adm/list-faq.html