Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 删除前导“quot/&引用;在批处理脚本中_Bash_Scripting_Sox - Fatal编程技术网

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