Bir UNIX dosya sisteminde belirli bir dosyam varsa, o dosyaya tüm bağlantıları hem sembolik hem de zor bulmak için bash kullanmanın bir yolu var mı? Her biri için farklı komutlara ihtiyacım varsa, bunlar nedir?
Bir UNIX dosya sisteminde belirli bir dosyam varsa, o dosyaya tüm bağlantıları hem sembolik hem de zor bulmak için bash kullanmanın bir yolu var mı? Her biri için farklı komutlara ihtiyacım varsa, bunlar nedir?
Yanıtlar:
Bunu GNU ile deneyin find:
find /start/dir -L -samefile /file/to/check -exec ls -li {} \;
Örnek çıktı:
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1
Bunun -lsyerine kullanabilirsiniz , -execancak tek tek dosyalar yerine hedef dosyanın inode ve diğer bilgilerini gösterecektir.
-Lve -samefilehem neden listelenecek. Atlarsanız, -Lsembolik bağlantılar izlenmez (bkz. man find).
GNU Find'ınız yoksa bunu yapabilirsiniz:
find / -inum "$(ls -i /file/to/check | cut -d ' ' -f 1)"
Ancak sembolik bağlantılar için işe yaramaz.