随机选择一个文件:一个更好的办法

在写前一篇文章的时候,发现做的有点复杂了,其实有更好的办法。 不必生成一个行号的文件, 文本文件本身就有行的概念,得到随机数后,直接取那行不就行了吗。 这是新版本,更短更简单:


#! /bin/sh
# randomly choose a file
# Simpler version, Yuwen Dai, 18 November, 2012
# Initial version, Yuwen Dai, 13 September, 2012

# Add file types here
FILE_TYPE="*.mp4 *.flv *.mp3"

# Get the total number of files
TOTAL=`ls -l $FILE_TYPE|wc -l`
TOTAL=$((TOTAL-1))

# Get a random number: [0, TOTAL]
R=$((${RANDOM}*${TOTAL}/32767))

# We have to ajust R, for sed uses line number starting from 1
R=$((R+1))

# Get the file name
FILE=`ls ${FILE_TYPE} |sed -ne "${R}p"`
echo ${FILE}

# we got file name, use it whatever you want
#exec mplayer "${FILE}"

此处利用了 sed 的一个特性: Np 命令, 打印第N行。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值