[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/