GNU/Linux >> Linux の 問題 >  >> Linux

シンボリックリンクを通常のファイルに変換するには?

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"
}

これは、ファイルがシンボリック リンクの場合、コピー コマンドを実行することを意味しています。


Linux
  1. Dockerコンテナに単一のファイルをマウントまたはシンボリックリンクする方法

  2. Linuxでファイルをシンボリックリンクするにはどうすればよいですか?

  3. ISO8859-15をUTF8に変換するには?

  1. ファイル内で \n を grep する方法

  2. ファイルデータをプレーンな 16 進数に変換するには?

  3. tar.bz2 を tar.gz に変換するにはどうすればよいですか?

  1. LinuxでファイルをUTF-8エンコーディングに変換する方法

  2. コマンドを使用してPPKをPEMファイルに変換する方法

  3. TAR ファイルを ISO ファイルに変換する方法