GNU/Linux >> Linux の 問題 >  >> Linux

Linux:特定の「元の」ファイルのすべてのシンボリックリンクを見つけますか? (逆 'readlink')

GNU find の使用 、これはファイルにハードリンクまたはシンボリックリンクされているファイルを見つけます:

find -L /dir/to/start -samefile /tmp/orig.file

このためのコマンドは見たことがありません。ターゲット ファイルには、どのソース ファイルがそれを指しているかについての情報が含まれていないため、簡単な作業ではありません。

これは「ハード」リンクに似ていますが、少なくともそれらは常に同じファイル システム上にあるため、find -inode を実行できます。 それらをリストします。ソフト リンクはファイル システムをまたがる可能性があるため、より問題になります。

あなたがしなければならないことは、基本的に ls -al を実行することだと思います 階層全体のすべてのファイルで grep を使用します -> /path/to/target/file を検索するには .

たとえば、これは私が自分のシステムで実行したものです (読みやすいようにフォーマットされています - これらの最後の 2 行は実際には one にあります) 実際の出力の行):

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

Gordon Davisson のコメントに触発されました。これは別の回答に似ていますが、exec を使用して目的の結果が得られました。元のファイルがどこにあるかを知らなくても、シンボリック リンクを見つけられるものが必要でした。

find / -type l -exec ls -al {} \; | grep -i "all_or_part_of_original_name"

Linux
  1. Linuxでファイルを見つける方法

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. LinuxですべてのSudoユーザーを見つける方法

  1. Linuxは、ディレクトリに関連するすべてのシンボリックリンクを見つけて削除しますか?

  2. Linuxで検索および検索コマンドを使用してファイルを検索する

  3. ファイルを見つけて、Linux でそのディレクトリに cd します

  1. LinuxファイルシステムですべてのPythonファイルを検索しますか?

  2. すべての Linux 圧縮/解凍コマンド

  3. Linuxは、指定された文字列のファイル名を再帰的に検索します