web-dev-qa-db-ja.com

通常のファイルではなく、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 Nov 21 16:07 anaconda3

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

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

以前はfindとsedを使用して成功していましたが、次にどこを見ればいいのか少し困っています。私がここで見逃している、またはそれほど明白ではない、明らかに間違っているものはありますか?

3
Glenak1911

から「*」を削除

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" {} \;
5
sapensadler