一旦我在包含.mp3文件的目录中,我就可以使用
随机播放歌曲mpg123 -Z * .mp3
但是,如果我想递归搜索目录及其子文件夹中的.mp3文件并随机播放,我尝试了以下命令,但它不起作用。
mpg123 -Z<(find / media -name * .mp3)
(find / media -name * .mp3),执行时会给出/ media及其子目录中的所有.mp3文件。
答案 0 :(得分:9)
mpg123 -Z $(find -name "*.mp3")
$(...)表示执行命令并将输出粘贴到此处。
另外,要绕过上面提到的命令行长度限制,请尝试:
mpg123 -Z $(find -name“* .mp3”| sort --random-sort | head -n 100)
find -name "*.mp3" | sort --random-sort| head -n 100|xargs -d '\n' mpg123
这应该正确处理空格,假设您没有嵌入换行符的文件名。
它将半随机置换您的MP3列表,然后选择随机列表的前100个,然后将其传递给mpg123。
答案 1 :(得分:1)
反引号。
mpg123 -Z `find /media -name \*.mp3`
虽然如果你有很多文件,但可能会遇到命令行长度限制。
答案 2 :(得分:1)
这样的事情会起作用吗?
find /media -name *.mp3 -print0 | xargs -0 mpg123 -Z
答案 3 :(得分:1)
以下工作正常。
find / media -name“* .mp3”| xargs -d'\ n'-n10 mpg123 -Z。
按'-n'选项,我们可以提供不。单个调用命令的参数。
即使在我关闭我写这个命令的终端后,歌曲继续播放,因为进程mpg123变成孤儿并继续运行。
devikasingh @兴趣:〜$ ps -e | grep mpg123
7239 ? 00:00:01 mpg123
ps -f 7239
UID PID PPID C STIME TTY STAT TIME CMD
1000 7239 1 0 15:21? S 0:01 mpg123 -Z / media / MUSIC& PIC / audio_for_you / For You.mp3 / media / MUSIC& PIC / audio_for_you / In My Place.mp3 /
答案 4 :(得分:1)
答案 5 :(得分:0)
感谢您的建议,通过使用它们,我能够创建以下脚本:
#!/bin/bash song=$(zenity --width=360 --height=320 --title "Select Folder" --file-selection --directory $HOME) find "$song" -name "*.mp3" | sort --random-sort | head -n 100 | xargs -d '\n' mpg123
答案 6 :(得分:0)
使用xargs可能更好,但我在Red Hat的bash中使用while循环。
find . -iname "*.mp3" -print | sort -R --random-source=/dev/urandom | while IFS= read -r filename; do play "$filename"; done
唯一的问题是杀人很烦人。要杀死它,你必须按住Ctrl-C直到while循环被杀死。
答案 7 :(得分:0)
我找到了这个和恕我直言,比其他解决方案更清洁。我没有拥有这些学分,他们会去网站所有者。
find $HOME/mp3s -iname '*.mp3' | mpg123 -Z -@ -
在https://dannyman.toldme.com/2004/12/28/howto-mpg123-random-mp3s/
上找到我刚刚从
name
更改为iname
,因为有时文件可以加盖大小...
答案 8 :(得分:0)
我几乎尝试了所有操作,并且通过管道运行mpg123时,它返回以下错误:“无法获取终端属性”,并且我无法使用终端控制键。
我发现播放由命令find找到的文件列表并能够使用终端控制键的唯一方法是(我的目录和文件带有空格):
find /media -type f -iname "*.mp3" > /tmp/mp3list
mpg123 -CZvv -@ /tmp/mp3list
如果您使用$(find / media -type f -iname“ * .mp3”),看起来mpg123使用空格作为分隔符,并且在我的情况下不起作用,因为我在所有目录名称中都有空格所有文件名。
这是一个脚本(playmp3.sh),仅在文件不存在时才执行查找:
#!/bin/sh
if ! [ -f /tmp/mp3list ]; then
find /media -type f -iname "*.mp3" > /tmp/mp3list
fi
mpg123 -CZvv -@ /tmp/mp3list
答案 9 :(得分:-1)
我的库位于单独的分区中,并且在我的根目录中,我有这个小脚本,它也随机播放前一首歌,我喜欢40 gb的音乐,所以它们几乎永远不会重复。
cd“ / media / $ USER / 7789f483-c7bf-46bc-9293-e8e05dd62199 / musik /” mpg123 -Z / / *。mp3;