为了检查音频文件的播放长度,我使用以下脚本:
#!/bin/bash
for dir in $(find . -type d); do
cd $dir
for file in *.ogg *.wav *.mp3
do
duration=$(ffprobe "$file" 2>&1 | awk '/Duration/ { print $2 }')
echo -e "$duration\t$file"
done | sort -n
cd - > /dev/null
done
当递归读取的目录名称中不包含空格时,这种方法可以正常工作。
当目录名中有空格时,$dir 变量中的第一部分和第二部分将被分开,因此......
- 目录 1
变成
- 目录
和
- 1
不幸的是我缺乏脚本知识,所以如果有人能给我指出正确的方向,以便将完整的目录名称传递到变量中,我将不胜感激。
非常感谢,
詹姆士。
答案1
代替
for dir in $(find . -type d); do
cd $dir
使用
find . -type d -print0 | while read -r -d $'\0' dir; do
cd "$dir"