You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ls输出通过管道传给mplayer 按大小顺序播放文件夹内文件

按文件大小排序后用mplayer播放文件夹内文件的正确方法

原有命令失效原因

  • ls -1S folder | mplayer:mplayer默认不会从标准输入读取播放列表,传入的内容不会被识别为播放文件
  • ls -1S folder | xargs mplayer:ls输出的是不带父目录路径的文件名,若当前工作目录不在目标文件夹内会找不到文件,同时遇到文件名含空格、换行等特殊字符时会拆分错误
  • ls -1S folder | xargs -print0 mplayer:参数使用错误,-print0是find/ls类命令的输出参数,xargs对应的空字符读取参数为-0,二者没有配对使用

正确实现方式

简易版(仅适合文件名无空格、特殊字符的场景)

先切换到目标文件夹,再把排序后的文件名传入mplayer:

cd /path/to/your/folder && mplayer $(ls -1S)

通用稳定版(适配所有文件名含特殊字符的场景)

使用空字符分隔的数据流避免文件名解析错误,支持带空格、换行等特殊字符的文件名:

find /path/to/your/folder -maxdepth 1 -type f -printf "%s\t%p\0" | sort -z -k1nr | cut -z -f2- | xargs -0 mplayer

各部分作用说明:

  • find部分:仅扫描目标文件夹下的一级普通文件,输出「文件大小+制表符+完整文件路径」,每条记录用空字符分隔
  • sort部分:按第一列的文件大小数值倒序排序,识别空字符分隔规则
  • cut部分:移除大小字段,仅保留完整的文件路径
  • xargs部分:把空字符分隔的路径列表作为参数传递给mplayer启动播放

如果需要递归扫描目标文件夹下所有子目录的文件,删除find命令中的-maxdepth 1参数即可。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:54:02