Identische Hardlinks/Inodes suchen

04/08/2009 - 21:56 von Werner Holtfreter | Report spam
Hallo,

ich möchte die Dateien im aktuellen Verzeichnis listen und dazu alle
Hardlinks auf den gleichen Inode.

Von Hand kann man das Gewünschte mehrstufig ereichen:


werner@linux-ewi7:~/t> ls -li
insgesamt 12
235125 -rw-r--r-- 3 werner users 2 4. Aug 17:35 1.txt
235125 -rw-r--r-- 3 werner users 2 4. Aug 17:35 2.txt
1618774 -rw-r--r-- 1 werner users 2 4. Aug 17:33 3.txt
1603090 drwxr-xr-x 2 werner users 72 4. Aug 20:07 d


Dann nach Inodes suchen lassen:


werner@linux-ewi7:~/t> find ~/ -xdev -inum 235125
/home/werner/t/d/4.txt
/home/werner/t/1.txt
/home/werner/t/2.txt
werner@linux-ewi7:~/t> find ~/ -xdev -inum 1618774
/home/werner/t/3.txt


Unterschiedliche Dateien, also das Suchergebnis unterschiedlicher
Inodes müssen dabei getrennt werden, z.B. durch eine Leerzeile oder
besser durch die betreffende Ausgabezeile von ls -l.

Zielsystem ist Linux-bash. Da ich nur sehr selten scripte würde ich
mich über eine Wegweisung oder ein paar Zeilen (ungetesteten) Code
sehr freuen.
Gruß Werner
http://www.manndat.de/fileadmin/Dok...melung.pdf
http://www.intact.ca/video.html <--VORSICHT HART
http://www.sextra.de/main.html?page!98
 

Lesen sie die antworten

#1 Marcel Bruinsma
05/08/2009 - 02:40 | Warnen spam
Werner Holtfreter wrote:

ich möchte die Dateien im aktuellen Verzeichnis listen
und dazu alle Hardlinks auf den gleichen Inode.



ls -i | awk '
{n[$1]||n[$1]=substr($0,index($0,$2))}
END{for(i in n){
print "find ~ -xdev -inum "i;
gsub(/[^[:alnum:]]/,"\\\\&",n[i]);
print "ls -li "n[i];
}}' | sh

printf -v email $(echo \ 155 141 162 143 145 154 142 162 165 151 \
156 163 155 141 100 171 141 150 157 157 056 143 157 155|tr \ \\\\)
# Live every life as if it were your last! #

Ähnliche fragen