2016-07-23 12 views
1
for f in ./*.mp3; do sox "$f" "${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done 

Dies ist ein Skript, das ich verwende, um Audiodateien zu verarbeiten. Das Problem ist, dass es in einer Schleife läuft und auch die neuen Audiodateien verarbeitet. Ich möchte dieses Problem beheben, indem Sie den Ausgang geht in einem Unterordner hat, so habe ich versucht, dies:entfernen führenden "./" in einem Batch-Skript

for f in ./*.mp3; do sox "$f" "/subfolder${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done 

Dies ist der Ausgang:

/subfolder./01processed.mp3 

mir Dies gibt einen Fehler mit Sox, ich müssen Sie die ./ vor dem Dateinamen-Ausgang entfernen, wie könnte ich das tun? Dies ist die Ausgabe Ich mag würde haben:

/subfolder/01processed.mp3 

Antwort

1
for f in *.mp3; do sox "$f" "/subfolder/${f%%.mp3}processed.mp3" silence 1 0.02 1% -1 0.02 1%; done 
+0

Ich habe das versucht und es hat immer noch nicht funktioniert, aber durch Hinzufügen eines führenden "." jetzt funktioniert es. 'do sox "$ f" "./subfolder/${f%%.mp3}processed.mp3" Stille 1 0.02 1% -1 0.02 1%; done ' – Marw

+0

@Marw Fügen Sie kein "." hinzu, entfernen Sie das "/" (verwenden Sie also "" subfolder/$ {f %%. mp3} processed.mp3 "'). –

0
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 

Sie abstreifen können sowohl die führende ./ und mp3 Hinter, aber Parametererweiterungen müssen einer nach dem anderen durchgeführt werden (sie können‘ t verschachtelt sein). Sie könnte Streifen nur die führende . und behalten Sie die / für, wenn Sie den Ausgangspfad bauen, aber es ist klarer, es herauszunehmen und es explizit zurück zu legen. (/subfolder$out macht es nicht klar, dass eine Datei in einem Ordner mit dem Namen subfolder gesetzt wird, anstatt Herstellung einer Datei/Ordner subfolder$out benannt.)

übrigens for f in ./*.mp3 ist die richtige Version, da es mit Dateien arbeiten das beginnt mit -; Andernfalls kann sox den Namen der Eingabedatei für eine Option verwechseln.

+0

Sie müssen eigentlich nichts entfernen. 'subfolder /./ file' ist völlig in Ordnung –