Macos 如何将多个子文件夹中的原始图像批量转换为DNG
因此,我的主文件夹中有20个子文件夹,每个子文件夹中大约有200个文件。我一直在尝试编写一个脚本,将每个子文件夹中的每张图片转换为DNG。 我做了一些研究,能够批量转换当前文件夹中的图像。 我曾试图发展这个想法,让它为子文件夹工作,但没有成功。 以下是我编写的代码:Macos 如何将多个子文件夹中的原始图像批量转换为DNG,macos,image,dng,Macos,Image,Dng,因此,我的主文件夹中有20个子文件夹,每个子文件夹中大约有200个文件。我一直在尝试编写一个脚本,将每个子文件夹中的每张图片转换为DNG。 我做了一些研究,能够批量转换当前文件夹中的图像。 我曾试图发展这个想法,让它为子文件夹工作,但没有成功。 以下是我编写的代码: for D in 'find . -type d'; do for i in *.RW2; do sips -s format jpeg $i --out "${i%.*}.jpg"; cd ..; done; done; 最简单
for D in 'find . -type d'; do for i in *.RW2; do sips -s format jpeg $i --out "${i%.*}.jpg"; cd ..; done; done;
最简单、最快的方法是使用GNU Parallel,如下所示:
find . -iname \*rw2 -print0 | parallel -0 sips -s format jpeg --out {.}.jpg {}
因为这将并行使用所有CPU核心。但是,在启动任何未测试的命令之前,最好像这样使用--dry run
选项,这样它就可以向您显示它将要执行的操作,但实际上不执行任何操作:
find . -iname \*rw2 -print0 | parallel --dry-run -0 sips -s format jpeg --out {.}.jpg {}
样本输出
sips -s format jpeg --out ./sub1/b.jpg ./sub1/b.rw2
sips -s format jpeg --out ./sub1/a.jpg ./sub1/a.RW2
sips -s format jpeg --out ./sub2/b.jpg ./sub2/b.rw2
如果您喜欢它的外观,请删除--dry run
,然后再次运行它。请注意,-iname
参数意味着它对大写/小写不敏感,因此它适用于“.RW2”和“.RW2”
GNU Parallel可通过自制轻松安装在macOS上,它具有:
brew install parallel
它也可以在没有软件包管理器的情况下安装(如homebrew),因为它实际上是一个Perl脚本,Mac附带Perl。因此,您可以通过在终端中执行以下操作进行安装:
(wget pi.dk/3 -qO - || curl pi.dk/3/) | bash
您的问题似乎很困惑,您是想要标题所示的
DNG
文件,还是代码所示的JPEG
文件。我的代码按原样生成JPEG。如果希望DNG
输出,则需要安装Adobe DNG Converter,然后运行:
find . -iname \*rw2 -print0 | parallel --dry-run -0 \"/Applications/Adobe DNG Converter.app/Contents/MacOS/Adobe DNG Converter\"
您可以附加到上述命令末尾的其他选项:
将原始-e
文件嵌入RW2
DNG
将创建未压缩的-u
文件DNG
将快速加载信息添加到-fl
DNG
parallel-j1…
Adobe DNG Converter可以使用自制在macOS下轻松安装,如下所示:
brew install caskroom/cask/adobe-dng-converter
如果您当前的问题是无法对某个扩展进行递归glob,那么这里已经给出了答案:这行代码看起来不像Python。