OS dan direktori home saya menggunakan SSD. Saya menyimpan beberapa file besar di hard disk, dan symlink dari direktori home saya ke hard disk (mis. ~ / Video / Film adalah symlink ke / mnt / hdd / Films). Saya juga memiliki sejumlah awalan Wine, yang masing-masing memiliki dosdevices / z: disinkronkan dengan /.
Jadi, jika saya menggunakan find tanpa -L, itu akan kehilangan semua yang ada di hard disk. Tetapi jika saya menggunakan find dengan -L, itu berakhir dalam satu lingkaran karena symlink Wine ke /.
Apakah ada cara yang masuk akal untuk menyelesaikan ini, sehingga menemukan pencarian di tempat yang saya inginkan? Secara intuitif, saya menginginkan sesuatu di sepanjang baris "follow symlinks, kecuali mereka berada di bawah direktori yang disebut dosdevices". "Ikuti symlink yang mengarah ke sesuatu di hard disk" juga akan berfungsi.
-prune
hanyalah hal yang saya cari. Saya telah menemukan bahwafind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
daftar semua symlink yang tidak ingin saya ikuti; Saya sekarang mencoba menemukan cara untuk menggunakan kueri itu untuk memangkas.find ~ <negative criteria> -prune -o <positive criteria> -print
, jadifind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d -prune -o <whatever it is you want> -print
Untuk mencari SEMUA tautan, ini berfungsi untuk saya:
sumber
Berapa banyak symlink ke hard disk yang Anda miliki? Jika tidak terlalu banyak satu solusi adalah tidak menggunakan "-L" sambil secara eksplisit menentukan symlink yang ingin Anda ikuti pada baris perintah find. Sesuatu seperti:
Ini akan mencari direktori saat ini (".") Serta symlink "~ / Video / Film" tetapi tidak akan turun ke symlink lain.
sumber
Solusi lain yang mengatasi masalah (setidaknya untuk kasus saya) adalah menggunakan bind mounts alih-alih tautan simbolik untuk direktori pada hard disk. Ini dilakukan dengan menambahkan entri
/etc/fstab
seperti ini:/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0
sumber