Bash 删除前导“quot/&引用;在批处理脚本中
这是我用来处理音频文件的脚本。问题是它一直在循环,同时处理新的音频文件。我想通过将输出放入子文件夹来解决此问题,因此我尝试了以下方法:Bash 删除前导“quot/&引用;在批处理脚本中,bash,scripting,sox,Bash,Scripting,Sox,这是我用来处理音频文件的脚本。问题是它一直在循环,同时处理新的音频文件。我想通过将输出放入子文件夹来解决此问题,因此我尝试了以下方法: for f in ./*.mp3; do sox "$f" "${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done 这是输出: for f in ./*.mp3; do sox "$f" "/subfolder${f%%.mp3}processed.mp3" silence 1 0.02 1%
for f in ./*.mp3; do sox "$f" "${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done
这是输出:
for f in ./*.mp3; do sox "$f" "/subfolder${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done
这给了我一个Sox错误,我需要在文件名输出之前删除./?这是我想要的输出:
/subfolder./01processed.mp3
您可以剥离前导的/
和尾随的mp3
,但参数扩展需要一次执行一个(不能嵌套)。在构建输出路径时,您可以仅剥离前导的
,并保留/
,但更清楚的是,将其取出并显式放回。(/subfolder$out
不明确文件是否放在名为subfolder
的文件夹中,而不是制作名为subfolder$out
的文件/文件夹)
顺便说一句,f in./*.mp3的
是最正确的版本,因为它可以处理以-
开头的文件;否则,sox
可能会将输入文件名误认为选项 我试过了,但还是不起作用,不过添加了一个前导“.”现在起作用了dosox“$f”。/subfolder/${f%%.mp3}processed.mp3“沉默10.021%-10.021%;完成“@Marw不添加“.”,删除“/”(即,使用“子文件夹/${f%%.mp3}processed.mp3”
)。您实际上不必删除任何内容<代码>子文件夹//file
非常好
/subfolder/01processed.mp3
for f in *.mp3; do sox "$f" "/subfolder/${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done
for f in ./*.mp3; do
out=${f#./}
out=${out%%.mp3}processed.mp3
sox "$f" "/subfolder/$out" silence 1 0.02 1% -1 0.02 1%
done