Come trovare tutti i file che sono fondamentalmente soft o hard link di altre directory o file su linux?

Come posso ottenere l’elenco di tutti i file collegati sul mio sistema o da una certa directory. Ho utilizzato per creare il link, ma sono diventati ingestibili con il tempo. Voglio l’elenco di tutti tali collegamenti da una directory. Qualcuno può aiutarmi?

  • Penso che questo appartiene a serverfault
  • Che cosa è serverfault?
  • prova qui: serverfault.com
  • non serverfault… non c’è niente di server o di rete qui… è superuser.com
InformationsquelleAutor DKSRathore | 2009-11-27

 

4 Replies
  1. 28

    Trovare dei link simbolici è facile:

    % find . -type l

    Ricerca di hard link è difficile, perché se una sottodirectory della directory in questione ha anche le sottodirectory poi quelli di aumentare il collegamento rigido conte. Ecco come sottodirectory sono collegati ai loro genitori in UNIX (è il .. voce in ogni sottodirectory).

    Se si desidera trovare legate file (e non di directory), questo lavoro:

    % find . -type f \! -links 1

    Questo funziona perché un file che non collegamenti avrà un collegamento conte > 1, e scollegato il file è un link count == 1, e quindi questo comando consente di cercare tutti i file il cui link conte <> 1

    In alternativa, sulle versioni più recenti di find si potrebbe utilizzare:

    % find . -type f -links +1

    Questo funziona per lo stesso motivo di cui sopra; tuttavia, le versioni più recenti di trovare può prendere +n o -n invece di un numero. Questo è equivalente a test per un periodo superiore a n o a meno di n, rispettivamente.

    • Wao, questo era un piccolo comando. Grazie Alnitak
    • Ehm… può un file <1 link? Voglio dire, non che lo rendono un fileless inode?
    • bene, per la fornitura di -1 avrebbe, infatti, non riescono a trovare alcun file.
  2. 2

    @OP, Se si dispone di GNU trovare, si possono trovare difficile collegamenti utilizzando -printf "%n",
    ad esempio,

    find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
    do
     echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
     # if 2 or more files have the same inode number, then they are hard links. 
     # you can therefore count how many $inum that are the same and determine those hard links, which 
     # you have to try doing yourself.
    done

Lascia un commento