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 '{}'" \;
うまくいくようです。