すべてのリンクを物理ファイルに再帰的に置き換える(gnu)

すべてのリンクを物理ファイルに再帰的に置き換える(gnu)

LinuxファイルでCode dxを実行するには、すべてのリンクを物理ファイルに置き換える必要があります。 Linuxで働いてから数年が経ち、用語が混乱しています。過去2日間、答えを探していました。簡単なスクリプトがありますか? 2,500万行のコードがあります。

元のディレクトリ:afile bfile clink_to_cfile_in_another_dir(複数のリンクを通過する可能性があります)

必要な最終結果:afile bfile cfile

これを行いましたが、まだ正しく機能していません。

find . -type l -exec "echo 'replacing {}'; cp -LR '{}' '{}'.deref rm '{}' \;"

答え1

いくつかの質問があります

  • 引用符の外側には必須で\;あり、execの別々のパラメータです。
  • ;最後の rm コマンドの前に a がありません。
  • exec は、コマンド全体を 1 つのコマンドとして実行しようとします。

このような複数のコマンドを実行するには、シェルを実行してスクリプトに渡すことができます。

find . -type l -exec /bin/bash -c "echo 'replacing {}'; cp -LR '{}' '{}.deref' ; rm '{}'" \;

うまくいくようです。

関連情報