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 -ls
yerine kullanabilirsiniz , -exec
ancak tek tek dosyalar yerine hedef dosyanın inode ve diğer bilgilerini gösterecektir.
-L
ve -samefile
hem neden listelenecek. Atlarsanız, -L
sembolik 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.