当我拍摄肖像时,我会用照片中人物的姓名首字母来命名。例如,Robert Gordon 的第一张图片将是 (正则表达式格式) rg.(dng|tiff?|jpe?g|ps(d|b)|xcf)
。下一个将是rg2...
等等。
如果我需要将它们分类到文件夹中,我使用这个:
mkdir <initials>/
mv <initials>*.* !$
但最近,我需要将大量照片分类到包含多个主题的文件夹中,所以我使用了这个(例如,首字母为 df:
for f in *.*; do
if echo "$f" | grep -i *df*.*; then
cp -n "$f" df/
echo "$f"
fi
done
但是我有很多图片要和很多不同的人一起浏览,而且当我完成后,我必须手动删除它们,确认我在命名时没有搞砸,所以它没有匹配.
有没有办法可以将扩展之前的所有内容分成两个字母的组,并将图像复制到匹配的文件夹,并在完成后将其删除?
编辑:我意识到在给定的示例中不需要正则表达式,但在其中一些示例中,我在命名时变得快速而粗心并出现错误,因此使用正则表达式更容易一次捕获所有这些,甚至错别字。显然,在这种情况下,正则表达式更大。这是一个示例,名称再次编辑为 Daniel Fortner,其中他们是唯一的主题。
for f in *.*; do
if echo "$f" | grep -Eq '^df?([0-9]*)?(hr)?\..*$'; then
mv "$f" df/
echo "$f"
fi
done