【发布时间】:2011-01-29 19:17:16
【问题描述】:
我已经有一段时间没有使用make了,所以请耐心等待......
我有一个目录 flac,其中包含 .FLAC 文件。我有一个相应的目录,mp3 包含 MP3 文件。如果 FLAC 文件比对应的 MP3 文件更新(或对应的 MP3 文件不存在),那么我想运行一堆命令将 FLAC 文件转换为 MP3 文件,并复制标签。
踢球者:我需要递归搜索flac目录,并在mp3目录下创建相应的子目录。目录和文件的名称中可以有空格,并以 UTF-8 命名。
我想使用make 来驱动它。
【问题讨论】:
-
有什么理由为此选择make?我原以为写一个 bash 脚本会更简单
-
@Neil,make 的基于模式的文件系统转换概念是解决原始问题的最佳方法。也许这种方法的实现有其局限性,但
make比裸bash更接近实现它。 -
@Pavel 好吧,一个遍历 flac 文件列表 (
find | while read flacname) 的sh脚本,从中生成一个mp3name,在dirname "$mp3name"上运行“mkdir -p” ,然后,if [ "$flacfile" -nt "$mp3file"]将"$flacname"转换为"$mp3name"并不是很神奇。与基于make的解决方案相比,您实际上失去的唯一功能是可以与make -jN并行运行N文件转换过程。 -
@ndim 这是我第一次听说 make 的语法被描述为“不错” :-)
-
使用
make和在文件名中有空格是矛盾的要求。使用适合问题域的工具。