如何用 find 和 sed 生成随机数?
如何在这段代码中生成随机数? 我尝试使用 $RANDOM,但数字仍然相同。如何改进呢?
find . -type f -exec sed -i 's/<field name=\"test/<field name=\"test$RANDOM/g' {} \;
how to generate random number in this code?
I try use $RANDOM, but the number is still the same. How to improve it?
find . -type f -exec sed -i 's/<field name=\"test/<field name=\"test$RANDOM/g' {} \;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您还可以避免使用这种“一行”方式创建脚本文件,例如:
因此,您:
,并且无需创建文件!
you can also avoid creating a script file with this "one line" way, ex.:
so, you:
and, no need to create a file!
发生这种情况是因为当您运行
find
命令时,$RANDOM
函数调用被其结果替换,而不是当find
运行sed 时
命令。您可以做的是将
sed -i ...
部分放入脚本中,然后将此脚本传递给find
。例如,如果
subst.sh
包含:那么
应该可以解决问题,因为
$RANDOM
将被评估与文件数量一样多的次数。(请注意,随机数在一个特定文件中仍然相同,但对于不同文件来说将是不同的。)
That happens because the
$RANDOM
function invocation is substituted with its result when you run thefind
command, not whenfind
runs thesed
command.What you can do is put the
sed -i ...
part in a script, and pass this script tofind
instead.For instance, if
subst.sh
contains:Then
should do the trick, because
$RANDOM
is going to be evaluated as many times as there are files.(Note that the random number will still be the same across one particular file, but it will be distinct for different files.)