Pomocí GNU find
, to najde soubory, které jsou pevně propojeny nebo se symbolem propojeny se souborem:
find -L /dir/to/start -samefile /tmp/orig.file
Neviděl jsem pro to příkaz a není to snadný úkol, protože cílový soubor neobsahuje žádné informace o tom, jaké zdrojové soubory na něj odkazují.
Toto je podobné "pevným" odkazům, ale alespoň ty jsou vždy ve stejném systému souborů, takže můžete udělat find -inode
vypsat je. Měkké odkazy jsou problematičtější, protože mohou křížit systémy souborů.
Myslím, že to, co budete muset udělat, je v podstatě provést ls -al
na každý soubor v celé vaší hierarchii a použijte grep
pro vyhledání -> /path/to/target/file
.
Zde je například jeden, který jsem spustil ve svém systému (formátovaný pro čitelnost – poslední dva řádky jsou ve skutečnosti na jednu řádek ve skutečném výstupu):
pax$ find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /usr/share/applications'
lrwxrwxrwx 1 pax pax 23 2010-06-12 14:56 /home/pax/applications_usr_share
-> /usr/share/applications
Inspirováno komentářem Gordona Davissona. Toto je podobné jiné odpovědi, ale požadované výsledky jsem získal pomocí exec. Potřeboval jsem něco, co dokáže najít symbolické odkazy, aniž bych věděl, kde se nachází původní soubor.
find / -type l -exec ls -al {} \; | grep -i "all_or_part_of_original_name"