由于刚刚得到帮助,我的脚本可以在名称中带有空格的目录上运行(问题 1447738 - 再次感谢),我想我可以将其输出传递到一个文本文件。
脚本如下:
find . -type d -print0 | while read -r -d $'\0' dir; 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
我认为我应该能够将“echo”行更改为此以输出到文本文件:
echo -e "$duration\t$file" > length-check.log
尽管没有 sdtout > 结果显示正确,但有了 > 所有日志文件都包含以下内容:
*.ogg
*.wav
*.mp3
我知道我可以通过启动脚本来获得输出:
./length-check.sh > 长度检查.log
但我想知道脚本中哪里出了问题。
所以,再次重申,我缺乏脚本知识,这阻碍了我。如果有人能告诉我如何正确地写出这一行,我将不胜感激。
再次感谢。
答案1
每次循环迭代时,你都会覆盖输出文件。大概想要的是附加到它;使用>>
而不是>
。
答案2
感谢大家的帮助。我们非常感激。这个问题可能仍然是个谜,因为并非所有建议都会产生日志文件输出。
我获得日志文件的唯一方法是这样启动该文件:
./length-check.sh > length-check.log
之后,将结果加载到电子表格中并按播放长度排序一切正常。
再次感谢大家,新年快乐!