GNU/Linux >> Znalost Linux >  >> Linux

Linux:Najít všechny symbolické odkazy daného „původního“ souboru? (reverzní 'readlink')

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"

Linux
  1. Linux – Jak zjistit datum vytvoření souboru?

  2. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  3. Všechny Linux Compress/Decompress Commands

  1. Jak najít soubor v Linuxu

  2. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  3. Linux najde názvy souborů s daným řetězcem rekurzivně

  1. Jak najít všechny uživatele Sudo v Linuxu

  2. Linux Najít a odebrat všechny symbolické odkazy týkající se adresáře?

  3. Najít všechny soubory Pythonu v systému souborů Linux?