Mein Betriebssystem und mein Home-Verzeichnis befinden sich auf einer SSD. Ich speichere einige große Dateien auf einer Festplatte und verweise von meinem Ausgangsverzeichnis auf die Festplatte (z. B. ~ / Videos / Films ist ein Symlink zu / mnt / hdd / Films). Ich habe auch eine Reihe von Wine-Präfixen, von denen jedes dosdevices / z: symlinked to / hat.
Wenn ich also find ohne -L verwendet habe, wird alles fehlen, was sich auf der Festplatte befindet. Wenn ich jedoch find mit -L verwende, endet es aufgrund von Wines Symlink zu / in einer Schleife.
Gibt es eine sinnvolle Möglichkeit, dies zu beheben, um Suchen dort zu finden, wo ich sie haben möchte? Intuitiv möchte ich etwas in der Art von "Follow Symlinks, es sei denn, sie befinden sich in einem Verzeichnis namens dosdevices". "Folgen Sie Symlinks, die sich auf etwas auf der Festplatte befinden" würde ebenfalls funktionieren.
-prune
ist genau das, wonach ich gesucht habe. Ich habe festgestellt, dassfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
alle Symlinks aufgelistet sind, denen ich nicht folgen möchte. Ich versuche jetzt, einen Weg zu finden, diese Abfrage zum Beschneiden zu verwenden.find ~ <negative criteria> -prune -o <positive criteria> -print
, alsofind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d -prune -o <whatever it is you want> -print
Um ALLE Links zu durchsuchen, hat dies bei mir funktioniert:
quelle
Wie viele Symlinks zu Festplatten haben Sie? Wenn es nicht zu viele sind, besteht eine Lösung darin, "-L" nicht zu verwenden, während Sie explizit die Symlinks angeben, denen Sie in der Befehlszeile find folgen möchten. Etwas wie:
Dadurch werden das aktuelle Verzeichnis (".") Sowie der Symlink "~ / Videos / Films" durchsucht, jedoch keine anderen Symlinks angezeigt.
quelle
Eine andere Lösung, die das Problem umgeht (zumindest für meinen Fall), besteht darin, Bindungs-Mounts anstelle symbolischer Links für die Verzeichnisse auf der Festplatte zu verwenden. Dies erfolgt durch Hinzufügen von Einträgen
/etc/fstab
wie folgt :/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0
quelle