2011-05-25 40 views
1

想知道如果有人在那里可以提供一个短的shell脚本,将随机通过一个目录,然后“执行”一个特定的文件。基本上我正在寻找一个MP3洗牌之类的话:Bash shell脚本随机运行不同的文件

mp3_123.mp3 mp3_456.mp3 mp3_567.mp3 mp3_678.mp3

所以他们是“mp3_1.mp3我可以重命名的所有文件,mp3_2.mp3等“但我宁愿让它实际上有(可能?)所有现有文件名的数组,然后随机抽出一个并在amarok或xine上播放它。 (我假设后半部分会是“... | exec amarok mp3_678.mp3”或其他东西,但我不知道如何做第一部分 - 通过文件名,创建一个数组,然后退出随机数组值和使用,作为

的文件名。任何帮助将是巨大的!谢谢!

+1

可能需要看看这个:http://benjisimon.blogspot.com/2008/05/bash-shell-hack-picking-random-set-of.html或排出到'排序-R'(注:仅GNU排序) – 2011-05-25 13:42:12

+0

嘿,谢谢 - 这几乎可以工作(实际上,有一个评论,更好...(“ls | sort -R |头部-n1“正是我所需要的,但是如何让amarok或xine来播放此文件?) – Dave 2011-05-25 13:55:44

+0

”ls | sort -R |头-n1 | xargs amarok“正是我所需要的!! :-) – Dave 2011-05-25 17:26:29

回答

2
find -iname '*/mp3' -print0 | rl -0 | xargs -r0 mplayer 

如前所述,sort -R有类似的语义rl

find -iname '*/mp3' -print0 | sort -z -R | xargs -r0 mplayer 
+0

这将工作,但”ls | sort -R |头-n1 | xargs amarok“的诀窍 - 它们不是全部mp3文件,有的是wav或wmv,所以这是更通用的(尽管我假设find-iname”*“-print0 ...等。 )在任何情况下,我都准备好了,谢谢! – Dave 2011-05-25 17:29:14

+0

欢呼!是的,有很多方法可以给猫 – sehe 2011-05-25 17:49:46