パラメータリストが長すぎる場合のsedの処理方法

パラメータリストが長すぎる場合のsedの処理方法

次のコマンドを適用してみてください。

sudo sed -i "s/auth-user-pass/auth-user-pass pass.txt/g" *.ovpn

ただし、引き続き次のエラーが発生します。

sudo: unable to execute /bin/sed: Argument list too long

引っ越したいですかxargs

ベストアンサー1

xargs変形用途find:

find . -maxdepth 1 -type f -name '*.ovpn' \
    -exec sed -i 's/auth-user-pass/auth-user-pass pass.txt/g' {} +

これにより、sed現在のディレクトリ内の指定されたパターンに一致する最大のファイル名の配置(通常のファイルのみ、一致するディレクトリ名なしなど)に対してコマンドが実行されます。また、潜在的に奇妙なファイル名(スペース、改行など)も処理します。

オプション-maxdepth/predicatesは標準ではありませんが、頻繁に実装されています。

おすすめ記事