我需要为大量图像创建 TIF 和 JPG 版本。
所有 JPG 图像都已存在,但只有部分 TIF 图像。有没有一种简单的方法可以搜索目录以查找所有没有对应 TIF 文件(即具有相同名称但文件扩展名不同的文件)的 JPG 文件?
答案1
Perl 单行代码:
find . -name '*.jpg'|perl -nle 's/\.jpg//;unless(-f "$_.tif"){print "$_.jpg"}'
63 个字符内:
find . -name '*.jpg'|perl -pnle 's/.jpg//;-f "$_.tif"||"$_.jpg"'
答案2
假设所有图像都在images
目录中且具有后缀,则以下小脚本将打印出所有在 UNIX 上.jpg
没有对应文件的图像文件:.tif
#!/bin/sh
find images/ -type f -name "*.jpg" |
while read j; do
t=${j%.jpg}.tif
if [ ! -f "$t" ]; then
echo "Lacking tif file: " $j
fi
done
将其粘贴到文件中,并将其保存在存储图像的文件夹上方的文件夹中。您可以将其命名为find-images
。例如:
├── find-images
└── images/
├── 1.jpg
└── 2.jpg
└── ...
现在,打开实用程序/Terminal.app,然后使用cd
命令导航到脚本所在的文件夹,例如,如果脚本位于桌面上,只需输入cd Desktop
。
然后输入chmod +x find-images
。现在您只需调用 即可运行该脚本./find-images
。
答案3
我将使用 Python,因为它是跨平台的。首先将您的 jpg 和 tif 文件放在单独的文件夹中。
import os
jpgPath = "path/to/jpgs/folder"
tifPath = "path/to/tifs/folder"
jpgList = [item.rsplit(".", 1)[0] for item in os.listdir(jpgPath)]
tifList = [item.rsplit(".", 1)[0] for item in os.listdir(tifPath)]
diffList = [item for item in jpgList if item not in tifList]
print diffList
然后,将该脚本保存到硬盘上某个文件中,可能名为find-images
。
现在,打开实用程序/Terminal.app,然后输入python /path/to/file
。例如,如果您将其保存在桌面上,它将是python ~/Desktop/find-images
(因为是~
您的主文件夹的快捷方式)。在这里,您可以运行更详细的解释在 Mac 上运行 Python 文件。
答案4
差异
#!/bin/bash
found1=$(find "$PWD" -name "*.$1")
found2=$(find "$PWD" -name "*.$2")
export IFS=$'\n'
for f1 in "$found1"; do
base1=${f1##/}
for f2 in "$found2"; do
base2=${f2##/}
[[ ${base1%.$1} == ${base2%.$2} ]] && continue 2
done
echo "$f1"
done
- 用法:
cd somedir; diffext jpg tif
- 在当前目录的子目录中递归搜索
- 将文件视为重复文件,即使它们位于不同的目录中