如何在shell中移动和重命名带有随机字符的文件?

时间:2014-12-20 03:52:52

标签: bash shell openwrt ash

我有这个文件:

  

/root/.aria2/aria2.txt

我希望将其移至:

  

的/ var /阀芯/ SMS /呼出/ aria2_XXXXX

请注意,XXXXX是随机字符。

如何仅使用openwrt(嵌入式设备的GNU / Linux发行版)和ash shell公开的工具来实现这一点?

3 个答案:

答案 0 :(得分:0)

在bash中生成半随机数的一种简单方法是使用date +%N命令或提供的系统$RANDOM

rn=$(date +%N)   # Nanoseconds
rn=${rn:3:5}     # to limit to 5 digits

或者,使用$RANDOM,您需要检查您是否有足够的数字用于您的目的。如果5是您需要的位数:

rn=$RANDOM
while [ ${#rn} -lt 5 ]; do
    rn="${rn}${RANDOM}"
done
rn=${rn:0:5}

在提供随机后缀时移动:

mv /root/.aria2/aria2.txt /var/spool/sms/outgoing/aria2_${rn}

答案 1 :(得分:0)

在具有/dev/random的系统上,您可以获得一串随机ASCII字符,例如

dd if=/dev/random count=1 |
tr -dc ' -~' |
dd bs=8 count=1

将第二个实例中的bs=设置为您想要的字符数。

两次获得相同结果的概率非常低,但您没有告诉我们什么是可接受的范围。您应该了解(或帮助我们帮助您了解)您的方案中可接受的概率。

答案 2 :(得分:0)

使用tempfile命令

mv aria2.txt `tempfile -d $dir -p aria2`

请参阅man tempfile了解详情。