
次のようにシンボリックリンクを解除したいと思います。
unlink *
しかし、unlink: extra operand
リンクファイルのみを削除し、元のファイルは保持したいです。
答え1
「*」を使用すると、現在の場所の下にあるすべてのファイルとディレクトリのリンクを解除しようとします。
unlink はファイルやディレクトリを扱うことができず、リンクのみを扱うことができます。次のように、find コマンドを使用してすべてのリンクを検索し、リンクを解除します。
find . -type l -exec unlink {} \;
答え2
で他のプロセスを起動することは避けます。またはの結果がfind … -exec …
必要な場合は、unlink
rm
find
-delete
代わりにオプションを選択します。
find . -maxdepth 1 -type l -delete
このコマンドは、-type l
現在のディレクトリ(サブディレクトリではありません。*
サブディレクトリまで降りないので、これが必要な動作だと思います)内のすべてのシンボリックリンク( )を見つけて削除します。デフォルトの動作ではシンボリックリンクをたどらないため、元のファイルは影響を受けません。
答え3
このコマンドは、現在のフォルダ内のすべてのシンボリックリンクを見つけて削除します。サブフォルダには再帰せず、ドットファイルは無視します。
find . -maxdepth 1 -type l ! -name '.*' -delete