这是一个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 f
,read -r
,tr '\012' '\000'
和xargs -0
。通过使用零字节作为终止符,xargs
可以接受文件名中的空格和换行符。
关于bash - bash :播放当前目录中的所有音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104138/