bash - bash :播放当前目录中的所有音频

标签 bash audio mime

这是一个bash脚本,

  • 获取当前目录中的所有文件,然后
  • 获取其中的所有音频文件(允许文件名具有空格)
  • 将列表发送到audacious -p-它将播放列表。

  • 第三步是脚本失败的地方。这是脚本:
    #!/bin/bash
    
    find $1 -name '* *' | while read filename; do
    
    Type=`file -i "$filename" -F "::" | sed 's/.*:: //' | sed 's/\/.*$//'`
    
    if [ $Type=audio ]; then
        List="$List '$filename'"
    fi
    done
    
    audacious2 -p $List &
    

    所以问题是:我该如何转换
    file name 1
    file name 2
    file name 3
    


    'file name 1' 'file name 2' 'file name 3'
    

    猛击?

    最佳答案

    #!/bin/sh
    #find "$1" -name '* *' |  # Edited as per OP's request
    find . -type f -name '* *' |
    while read -r filename; do
        case `file -i "$filename" -F "::"` in
            *::" audio"/*) echo "$filename" | tr '\012' '\000' ;;
        esac
    done |
    xargs -0 audacious2 -p &
    

    这里的重点是使用xargs将文件名列表提供给命令,但是我希望您也将欣赏模式匹配条件现在变得更加优雅;肯定学会使用case。 (希望我从file正确获得了输出。)

    编辑已更新为使用find -type fread -rtr '\012' '\000'xargs -0。通过使用零字节作为终止符,xargs可以接受文件名中的空格和换行符。

    关于bash - bash :播放当前目录中的所有音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104138/

    相关文章:

    ipad - iPad Safari <audio>无法播放

    android - 播放时可以改变声音输出吗?

    wix - 通过 WIX 添加 MimeMap 失败

    bash - 在 shell 提示符下键入文本

    python - Linux:如何将命令行参数传递给传递给脚本的命令行参数?

    linux - 如何从文件中求和并以特定方式在 linux 中的另一个文件中移动?

    python - 使用 Python 自动将 PNG 转换为 JPG

    linux - 使用 sed 修改文件

    arrays - 通过从as3中的库文件制作数组来播放声音?

    java - 设置全局 UTF-8 支持的 session 属性