for f in $(find -type l);do cp --remove-destination $(readlink $f) $f;done;
- 現在のディレクトリとサブディレクトリ
find -type l
のシンボリック リンクを確認します - リンクされたファイル パスを取得する
readlink $f
- シンボリック リンクを削除し、ファイル
cp --remove-destination $(readlink $f) $f
をコピーします。
シンボリックリンクを通常のファイルに変換する単一のコマンドはありません。最も直接的な方法は readlink
を使用することです シンボリックリンクが指すファイルを見つけて、そのファイルをシンボリックリンクにコピーします:
cp --remove-destination `readlink bar.pdf` bar.pdf
もちろん、bar.pdf
の場合 実際、最初は通常のファイルである場合、これによりファイルが破壊されます。したがって、健全性チェックを行うことをお勧めします。
他の回答の焼き直しですが、渡されたリンクが実際にシンボリック リンクであることを確認するために「サニティ チェック」を追加します。
removelink() {
[ -L "$1" ] && cp --remove-destination "$(readlink "$1")" "$1"
}
これは、ファイルがシンボリック リンクの場合、コピー コマンドを実行することを意味しています。