通常のファイルではなく、Sedで検索と置換を行う

通常のファイルではなく、Sedで検索と置換を行う

私はポータブル Anaconda パッケージに取り組んでおり、find と sed を使用してすべてのファイルを検索し、現在のディレクトリとそのサブディレクトリ内のファイル内のパスを置き換えようとしています。

しかし、コマンドを実行すると、sed はエラーをスローします:

sed: couldn't edit anaconda3: not a regular file

私が使用しているコマンドは次のとおりです。

find ./ -type f -exec sed -i -e "s+/opt/conda_tools+$TOOLKIT_DIR+g" * {} \;

/ はパスの一部なので、区切り文字として + を使用しています。スクリプトを実行しているディレクトリの内容は次のとおりです。

drwxr-xr-x 24 test_user linuxusers 4096 11月21日 16:07 anaconda3

find コマンドを単独で実行すると、ファイルは期待どおりにリストされますが、何らかの理由でディレクトリ名が引き続き取得されます。次のコマンドのバリエーションも試しましたが、成功しませんでした。

find ./ -type f -exec sed -i '' "s+/opt/conda_tools+$INSTALL_DIR+g" * {} \;

これまで find と sed をうまく使用してきましたが、次にどこを調べればよいのか少し困惑しています。ここで私が見逃している、またはそれほど明らかではない、明らかに間違っている点はありますか?

答え1

'*'を削除

find ./ -type f -exec sed -ie "s+/opt/conda_tools+$TOOLKIT_DIR+g" * {} \;

それで

find ./ -type f -exec sed -ie "s+/opt/conda_tools+$TOOLKIT_DIR+g" {} \;

関連情報