フォルダー内のすべてのハードリンクを解除する
(同じフォルダーまたは別の場所に)ハードリンクが設定された特定の数のファイルを含むフォルダーがあり、これらのファイルのハードリンクを解除したいので、それらのファイルは独立し、内容の変更が影響を与えません他のファイル(リンク数は1になります)。 以下では、基本的に各ハードリンクを別の場所にコピーしてから元の場所に戻すソリューションを示します。 ただし、この方法はかなり粗雑でエラーが発生しやすいので、ファイルのハードリンクを解除するコマンドがあるかどうかを知りたいのですが。 粗野な答え: ハードリンクのあるファイルを検索します(編集:ハードリンクのあるソケットなども検索するには、を使用しますfind -not -type d -links +1): find -type f -links +1 # files only find -not -type d -links +1 # files, sockets etc. ファイルをハードリンク解除する別の方法(ファイルを別の場所にコピーして元に戻す): 編集: Celadaが言ったように、タイムスタンプと権限が失われないように、以下のcp -pを実行するのが最善です。 編集: 一時ディレクトリを作成し、その下のファイルにコピーします。一時ファイルを上書きする代わりに、一部のデータを上書きするリスクを最小限に抑えますが、mvコマンドは依然として危険です(@Tobuに感謝)。 編集: 同じファイルシステム(@MikkoRantalainen)に一時ディレクトリを作成してみてください。 # This is unhardlink.sh set -e for i in "$@"; do temp="$(mktemp -d -- …