web-dev-qa-db-ja.com

リンク自体を削除せずにシンボリックリンクのターゲットを削除するにはどうすればよいですか?

~/Desktop/test.txtを指すシンボリックリンク~/rendu/test.txtがあります。

~/Desktop/test.txtのパスのみを知っています。シンボリックリンクを削除せずに~/rendu/test.txtを削除する高速な方法が必要です。

理由を知りたい人のために:crypted.xxxという名前のファイルがデスクトップにあります。このファイルは暗号化され、パスワードが含まれています。

暗号化されたファイルを更新するときは、それを復号化し、特別なディレクトリにcrypted.txtを作成します。そのため、実用的な理由から、デスクトップ上のそのファイルへのリンクを作成します。しかし、私のcrypted.txtを見た後、このcrypted.txtをすぐに削除したい(しかし、デスクトップのリンクは削除しない)。

10
Ugo Hed

findを使用してシンボリックリンクを検索し、readlinkを使用してrmへのターゲットへのフルパスを取得します。

find ~/Desktop/ -type l -name 'test.txt' -exec bash -c 'rm "$(readlink -f "$1")"' _ {} \;

または、あなたが既に知っているように、リンク名:

rm "$(readlink -f ~/Desktop/test.txt)"
11
heemayl

単に使用します:

printf "" > "$(readlink '/path/to/link')"

to clearファイル、または

rm "$(readlink '/path/to/link')"

to removeファイル。

5
Jacob Vlijm