[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Hardlinks verwenden ZWISCHENERGEBNIS
[Thread Prev] | [Thread Next]
- Subject: Re: Hardlinks verwenden ZWISCHENERGEBNIS
- From: Raphael Becker <rabe@xxxxxxxxx>
- Date: Sat, 15 Aug 2009 00:06:04 +0200
- To: uugrn@xxxxxxxxxxxxxxx
On Fri, Aug 14, 2009 at 02:39:23PM +0200, Werner Holtfreter wrote: > > Wie kann man nachtraeglich feststellen, wo bzw. in welchen > > Verzeichnissen die zusammengehoerigen Hardlinks stecken? > > Fuer dieses Problem wurde hier und in de.comp.os.unix.shell > eine gute Loesung gefunden: > > find . -maxdepth 1 -xdev ! -type d -links +1 -exec sh -c 'echo;ls -l -- "$1";find ~/ -xdev -samefile "$1"' sh {} \;;echo Diese Loesung finde ich sehr strange (auch wenn sie funktionieren mag). Ich haette folgende Idee anzubieten: gfind . -links +1 -type f -printf "%i|%p\n" > hardlinks.out Das erzeugt hier zB folgenden Output: 12765612|./A 12765612|./B 12765612|./C 12765599|./a 12765599|./b (d.h. nur alle Inodes vom Typ "Datei", die mehr als einen Link haben) Wenn Du nun wissen willst, welches die anderen Hardlinks von ./C sind, dann fragst Du das so ab: ---[suche.sh] ------------------------------------------ #! /bin/sh if [ $# -ge 1 ]; then while [ -n "$1" ]; do SUCHE="$1" INODES="$(grep -F "|${SUCHE}" hardlinks.out | grep -o "[^|]*")" for I in $INODES; do echo "Hardlinks auf $SUCHE (${I}):" < hardlinks.out grep "^${I}|" | cut -f 2- -d "|" done shift done else echo "$0 Datei(pattern)" fi --------------------------------------------- $ ./suche.sh ./C Hardlinks auf ./C (12765612): ./A ./B ./C Man koennte das auch mit Arrays in awk loesen. Das muesste ich aber erst ausknobeln. Gruss Raphael -- Raphael Becker <rabe@xxxxxxxxx> http://rabe.uugrn.org/ https://www.xing.com/profile/Raphael_Becker GnuPG: E7B2 1D66 3AF2 EDC7 9828 6D7A 9CDA 3E7B 10CA 9F2D .........|.........|.........|.........|.........|.........|.........|.. -- http://mailman.uugrn.org/mailman/listinfo/uugrn Wiki: http://wiki.uugrn.org/wiki/UUGRN:Mailingliste Archiv: http://lists.uugrn.org/