ソースディレクトリとともにシンボリックリンクを削除したいと思います。
例えば -
ls -lrt
testsymlink -> /user/temp/testdir
testsymlink
と の両方を削除したいと思い/user/temp/testdir
ます。私はシンボリックリンク名しか知らないと考えてください。
Python を使用するユーティリティはどれもうまく機能します。
の結果を使用してos.path.realpath
、symlink ターゲットを検出して削除できます。例:
import os
# ./foo -> ./bar
filepath = "./foo"
if (os.path.realpath(filepath) != filepath):
targetpath = os.path.realpath(filepath)
os.remove(filepath)
if (targetpath):
os.remove(targetpath)
編集: Python での解決策が必要だとは思いませんでした: これはすべて、UNIX シェルでのみ関連します。以下の 2 つのコマンドを呼び出しでラップすることもできますがos.system()
、Tim の回答に従うことを強くお勧めします。
シンボリックリンクが指しているオブジェクトのパスを取得するには、次を使用できますreadlink
。
$ readlink testsymlink
/user/temp/testdir
シンボリックリンクが指しているオブジェクトを削除するには、 to の出力を渡すことができreadlink
ますrm
:
$ rm -r `readlink testsymlink`
バッククォートにより、それらの内部のコマンドが実行され、独自の出力に置き換えられます。最後に、シンボリック リンク自体を削除するには、次のコマンドを実行します。
$ rm testsymlink