编码音频文件,然后使用bash脚本重命名它们

时间:2011-06-07 09:28:56

标签: bash audio wav

我正在编写一个将在Linux上运行以转换/编码音频文件的Bash脚本

到目前为止,转换工作正常,但是当根据我必须坚持的特定模式重命名生成的文件时,它会产生错误。

必须将名为Audio-001.flac的文件重命名为 2552011-Unit05-Fil001.flac遵循以下模式:[记录日期 - 记录单位ID - 文件ID]

我用于重命名的代码:

echo "Enter Recording Date, Recording Unit-ID, and File-ID Separated by SPACE"

read RD RU FID

echo "Your input is: $RD, $RU, $FD " >> /home/user-name/Music/User-Input.txt #This is for logging

mv $FLACS/*.flac $FLACS/${RD}-${RU}-${FID}.$flac

我收到错误:mv: target 22112011-Unit05-File0. is not a directory

我可以使用find和sed吗?

find bar -iname "*.wav" -printf 'mv %p %p\n' \

   | sed 's/*\.wav$/${RD}-${RU}-${FID}\.flac/' \
   | while read l; do eval $l; done`

2 个答案:

答案 0 :(得分:4)

所需工作的细分,所以:

  

1 - 解析文件夹树(完整的.WAV文件)

这可以通过以下几种方式完成:

find WHERE -print | grep -i PATTERN #or
find WHERE -name ... print0 | xargs -0 -I% ....  #or the simple
echo ./**/*.wav
  

2 - 使用开源工具,如flac和ffmpeg   将该文件夹树中的所有.WAV文件转换为.FLAC

是的,你是对的。一般语法是

flac [<general-options>] [<format-options>] [<encoding options>] [inputfile [...]]
  

3-将.FLAC文件重新放入   创建了相同的文件夹树   原来的

不是一项艰巨的任务。在Linux中,您可以使用mkdir命令创建目录。您可以从find命令(1)获取相同的树。可能还需要使用dirname命令。 (这里也是其他方式,但dirname很好)

  命名新的.FLAC和他们的   它将添加一个相应的文件夹   文件名的唯一标识符   即名为2582001的文件夹包含   文件2582001-1.wav和2582001-2.wav   将被重新创建,并将包含两个   .FLAC文件的名称   2582001-REC05-FIL1.FLAC和   2582001-REC05-FIL2.FLAC。这个   新文件名的结构是   [录制日期 - 录制单元ID -   文件ID]。

同样不是一项艰巨的任务,您可以使用以下内容:

command > "${RecordingDate} - ${RecordingUnitID} - ${FileID}"

但不建议这样做。当然会更好地命名没有空格的文件,例如:

command > "${RecordingDate}-${RecordingUnitID}-${FileID}"

如果要重命名文件,请使用mv命令,如:

mv oldfilename.ext "${RecordingDate}-${RecordingUnitID}-${FileID}.$newext"

Ps:如果你想要一些更准确的答案,请尝试更准确。 :)

答案 1 :(得分:0)

您正在尝试将mv个更多文件转换为“一个文件”。

mv $FLACS/*.flac $FLACS/${RD}-${RU}-${FID}.$flac

*.flac扩展为更多文件。你不能将更多的文件合并为一个。当移动更多文件时,mv希望将他的最后一个参数作为目录。

你可能想要:

mv $FLACS/some_one_file.flac  $FLACS/${RD}-${RU}-${FID}.flac