αԋɱҽԃ αмєяιcαη Asked: 2019-04-01 09:28:20 +0800 CST2019-04-01 09:28:20 +0800 CST 2019-04-01 09:28:20 +0800 CST 如果参数列表太长,如何处理 sed 772 尝试应用以下命令: 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? awk sed 2 个回答 Voted choroba 2019-04-01T09:56:23+08:002019-04-01T09:56:23+08:00 是的,与xargs是正确的方法。 简单的情况是 echo *.ovpn | xargs sed -i 's/auth-user-pass/auth-user-pass pass.txt/g' 但它仅适用于名称不包含空格的文件。安全的方法是 printf '%s\0' *.ovpn | xargs -0 sed ... 如果您不想将整个管道运行为root,请指定sudobeforexargs或 before sed。 Best Answer Kusalananda 2019-04-01T10:00:10+08:002019-04-01T10:00:10+08:00 使用的非xargs变体find: find . -maxdepth 1 -type f -name '*.ovpn' \ -exec sed -i 's/auth-user-pass/auth-user-pass pass.txt/g' {} + 这将sed在尽可能多的文件名上执行您的命令(仅常规文件,没有匹配的目录名等),文件名与当前目录中的给定模式匹配(仅)。它还可以处理可能奇怪的文件名(空格、换行符等) -maxdepth选项/谓词不是标准的,但经常实现。
是的,与
xargs
是正确的方法。简单的情况是
但它仅适用于名称不包含空格的文件。安全的方法是
如果您不想将整个管道运行为
root
,请指定sudo
beforexargs
或 beforesed
。使用的非
xargs
变体find
:这将
sed
在尽可能多的文件名上执行您的命令(仅常规文件,没有匹配的目录名等),文件名与当前目录中的给定模式匹配(仅)。它还可以处理可能奇怪的文件名(空格、换行符等)-maxdepth
选项/谓词不是标准的,但经常实现。