隨機選擇一個文件:一個更好的辦法

在寫前一篇文章的時候,發現做的有點複雜了,其實有更好的辦法。 不必生成一個行號的文件, 文本文件本身就有行的概念,得到隨機數後,直接取那行不就行了嗎。 這是新版本,更短更簡單:


#! /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行。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章