/path/to/data/folder/month/date/hour/minute/file
のデータを削除して/path/to/recent/file
にシンボリックリンクし、ファイルが作成されるたびにこれを自動的に実行したい。
/path/to/recent/file
が存在するかどうか事前にわからない場合、どうすれば作成(存在しない場合)または置き換え(存在する場合)できますか?私はそれが存在するかどうかを確認してから、削除、シンボリックリンクを実行できると確信していますが、私が望むことを1つのステップで実行する単純なコマンドがあるかどうか疑問に思っています。
マニュアル をお読みください。
ln -sfn /new/target /path/to/symlink
$ man ln
-n、-no-dereference
ディレクトリへのシンボリックリンクの場合、LINK_NAMEを通常のファイルとして扱います
これがln
の-f
オプションの目的です。リンクを作成する前に、既存の宛先ファイルがあれば削除します。
ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
/path/to/recent/file
を指す/path/to/data/folder/month/date/hour/minute/file
のシンボリックリンクを作成し、必要に応じて既存のファイルまたはファイルへのシンボリックリンクを置き換えます(既に何も存在しない場合は正常に動作します)。
ディレクトリ、またはディレクトリへのシンボリックリンクがすでにターゲット名で存在する場合、シンボリックリンクはその中に作成されます(つまり、上記の例では/path/to/recent/file/file
になります)。 ln
の一部のバージョンで使用可能な-n
オプションは、ディレクトリへのシンボリックリンクを処理し、必要に応じてそれらを置き換えます。
ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
POSIX ln
は-n
を指定していないため、一般にこれに依存することはできません。 ln
の動作の多くは実装定義なので、実際に使用しているシステムの詳細を確認する必要があります。 GNU ln
を使用している場合は、-t
および-T
オプションも使用して、ディレクトリの存在下でその動作を完全に予測可能にすることができます( ieは、同じ名前の既存のディレクトリ内にリンクを作成する代わりに失敗します)。