ディレクトリの下にあるすべてのシンボリックリンクを解除するにはどうすればよいですか?

ディレクトリの下にあるすべてのシンボリックリンクを解除するにはどうすればよいですか?

次のようにシンボリックリンクを解除したいと思います。

unlink *

しかし、unlink: extra operand

リンクファイルのみを削除し、元のファイルは保持したいです。

答え1

「*」を使用すると、現在の場所の下にあるすべてのファイルとディレクトリのリンクを解除しようとします。

unlink はファイルやディレクトリを扱うことができず、リンクのみを扱うことができます。次のように、find コマンドを使用してすべてのリンクを検索し、リンクを解除します。

find . -type l -exec unlink {} \;

答え2

で他のプロセスを起動することは避けます。またはの結果がfind … -exec …必要な場合は、unlinkrmfind-delete代わりにオプションを選択します。

find . -maxdepth 1 -type l -delete

このコマンドは、-type l現在のディレクトリ(サブディレクトリではありません。*サブディレクトリまで降りないので、これが必要な動作だと思います)内のすべてのシンボリックリンク( )を見つけて削除します。デフォルトの動作ではシンボリックリンクをたどらないため、元のファイルは影響を受けません。

答え3

このコマンドは、現在のフォルダ内のすべてのシンボリックリンクを見つけて削除します。サブフォルダには再帰せず、ドットファイルは無視します。

find . -maxdepth 1 -type l ! -name '.*' -delete

関連情報