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

Linuxで壊れたシンボリックリンクを見つけて削除する方法

少し前に、ソフトリンクとハードリンクとはについて説明しました 実用的な例で。場合によっては、どこも指していない未使用のソフトリンクやシンボリックリンクを削除するのを忘れることがあります。未使用のリンクをファイルシステムに保持しても、ディスク領域を少し占有することを除いて、システムに害を及ぼすことはありません。したがって、それらを保持する意味はありません。 Linuxシステムで壊れたシンボリックリンクを見つけて削除するだけです。

Linuxで壊れたシンボリックリンクやソフトリンクを見つける方法はたくさんあります。ここでは2つの方法を示しました。

シンボリックリンク コマンドライン、シンボリックリンクメンテナンスユーティリティです。指定されたディレクトリをスキャンし、シンボリックリンクがある場合はそれを一覧表示します。

シンボリックリンクは、多くのLinuxディストリビューションの公式リポジトリで利用できます。

CentOSにシンボリックリンクをインストールするには 、実行:

$ sudo yum install symlinks

Fedora

$ sudo dnf install symlinks

Debian Ubuntu Linux Mint

$ sudo apt-get install symlinks

Ubuntuでは、 [universe]を有効にする必要があります リポジトリ。

$ sudo add-apt-repository universe

Symlinksをインストールした後、次のコマンドを実行して、壊れたシンボリックリンクを見つけて削除します。

$ symlinks -dr <directory-path>

上記のコマンドは、指定されたディレクトリ内の壊れたシンボリックリンクをスキャンし、それらを削除します。

ここで

  • d -ぶら下がっているシンボリックリンクを削除します
  • r -再帰的

例を示しましょう。 "abc"という名前のファイルを作成します 現在のディレクトリにあります。

$ touch abc

次に、 'xyz'というシンボリックリンクを作成します abcの場合 ファイル:

$ ln -s abc xyz

次に、実際のファイルを削除します。つまり、 abc

$ rm abc

ご存知かもしれませんが、実際のファイルを削除すると、シンボリックリンクには価値がなくなります。ただの近道で、今は壊れているからです。

壊れたシンボリックリンクを見つけるには、次のコマンドを実行します:

$ symlinks .

ドットに注意してください ( ) 最後に。これは、現在のディレクトリで壊れたリンクを検索していることを意味します。

出力例:

dangling: /home/sk/xyz -> abc

ここでは、 xyz 実際のソースファイル"abc"を削除したため、ぶら下がっています 。したがって、コマンドを使用してこの壊れたリンクを削除しましょう:

$ symlinks -dr .

出力例:

dangling: /home/sk/xyz -> abc
deleted: /home/sk/xyz -> abc

最後に、 symlinksを実行します もう一度コマンドを実行して、壊れたリンクが残っていないかどうかを確認します。

findを使用することもできます 壊れたシンボリックリンクを削除するコマンド。

壊れたシンボリックリンクを検索し、削除しないようにするには、次のコマンドを実行します。

$ find . -xtype l

このコマンドは、現在のディレクトリにある壊れたシンボリックリンクを一覧表示します。 / usr / local / など、特定のパスで壊れたシンボリックリンクを検索する場合 、実行:

$ find /usr/local/ -xtype l

出力:

上記のコマンドは、 / usr / local /で壊れたリンクを検索します およびそのサブディレクトリ。上記の出力でわかるように、多くの壊れたシンボリックリンクがあります。

または、次のコマンドを使用して、未使用のシンボリックリンクを一覧表示します。

$ find /usr/local/ -xtype l ! -exec test -e {} \; -print

壊れたリンクがどこを指しているかを確認することも可能です。目的のシンボリックリンクを削除していることを確認することをお勧めします。

$ find /usr/local/ -xtype l -exec ls -l {} \+

出力例:

lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/drracket -> /home/sk/racket/bin/drracket
lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/gracket -> /home/sk/racket/bin/gracket
lrwxrwxrwx 1 root root 32 Jan 21 08:53 /usr/local/bin/gracket-text -> /home/sk/racket/bin/gracket-text
lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mred -> /home/sk/racket/bin/mred
lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/mred-text -> /home/sk/racket/bin/mred-text
lrwxrwxrwx 1 root root 23 Jan 21 08:53 /usr/local/bin/mzc -> /home/sk/racket/bin/mzc
lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mzpp -> /home/sk/racket/bin/mzpp
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/mzscheme -> /home/sk/racket/bin/mzscheme
lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/mztext -> /home/sk/racket/bin/mztext
lrwxrwxrwx 1 root root 30 Jan 21 08:53 /usr/local/bin/pdf-slatex -> /home/sk/racket/bin/pdf-slatex
lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/plt-games -> /home/sk/racket/bin/plt-games
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-help -> /home/sk/racket/bin/plt-help
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r5rs -> /home/sk/racket/bin/plt-r5rs
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r6rs -> /home/sk/racket/bin/plt-r6rs
lrwxrwxrwx 1 root root 34 Jan 21 08:53 /usr/local/bin/plt-web-server -> /home/sk/racket/bin/plt-web-server
lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/racket -> /home/sk/racket/bin/racket
lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/raco -> /home/sk/racket/bin/raco
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/scribble -> /home/sk/racket/bin/scribble
lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/setup-plt -> /home/sk/racket/bin/setup-plt
lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/slatex -> /home/sk/racket/bin/slatex
lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/slideshow -> /home/sk/racket/bin/slideshow
lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/swindle -> /home/sk/racket/bin/swindle

壊れたリンクをすべて一度に削除するには、次のコマンドを実行します。

$ sudo find /usr/local/ -xtype l -delete

または、

$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete

/ usr / local /を置き換えます 自分の道で。

推奨される読み物:

  • Linuxでシンボリックリンクを一覧表示する方法

お役に立てば幸いです。


Linux
  1. Linuxでディレクトリを再帰的に検索および削除する方法

  2. Linuxでゾンビプロセスを見つけて殺す方法

  3. Linuxでメモリバッファとキャッシュを削除する方法

  1. Linuxで重複する写真を見つけて削除する方法

  2. Linuxでユーザーグループを作成および削除する方法

  3. Linux で空のディレクトリとファイルを見つけて削除する方法

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

  2. LinuxでのUIDとは何ですか、それを見つけて変更する方法

  3. Linuxでディレクトリとフォルダを削除する方法は?