从一堆文件夹中提取所有图片文件

从一堆文件夹中提取所有图片文件

所以基本上我有一个外部硬盘驱动器,上面有一堆旧照片,我的目标是将它们全部放到谷歌照片中。问题是,因为这些照片是用 mac 照片软件管理的,根据年份和日期分类到一大堆不同的文件夹中(我认为大约有 4000 个不同的文件夹),我可以手动浏览并上传照片,但这需要花费一些时间很久。因此,我正在寻找一种方法来获取所有带有图片扩展名(例如 .jpg、.bmp 等)的文件,并将它们移动到一个文件夹中。我正在使用 Ubuntu,并且不怕编写脚本来实现此目的。谢谢你!

答案1

function imageext () 
{ 
    if ! ((${#imageextensionlist[@]})); then
        declare -ga imageextensionlist=($(grep / /etc/mime.types|grep 'image/'|xargs printf '%s\n'|grep -v /));
    fi;
    [[ " ${imageextensionlist[@]} " == *" ${1,,} "* ]]
}
function videoext () 
{ 
    if ! ((${#videoextensionlist[@]})); then
        declare -ga videoextensionlist=($(grep / /etc/mime.types|grep 'video/'|xargs printf '%s\n'|grep -v /));
    fi;
    [[ " ${videoextensionlist[@]} " == *" ${1,,} "* ]]
}
function imagesize () # you may need to install imagemagick
{ 
    local re=$(identify -format %wx%h "${1}");
    printf "${re%%x*}x${re##*x}"
}

cd /parrent/dir/where/your/pictures;
mkdir tmp;
mv * tmp/;
mkdir videos pictures other;


find "${PWD}/tmp" -type f | while read thefile;do
    if imageext "${thefile##*.}";then
        imgsize="$(imagesize "${thefile}")";
        [[ ! -d "${imgsize:-none}" ]] && mkdir -p "${imgsize:-none}"
        mv "${thefile}" pictures/${imgsize:-none}/;
    elif videoext "${thefile##*.}";then
        mv "${thefile}" videos/;
    else
        mv "${thefile}" other/
    fi
done

这将按图片/中的分辨率组织图片,并将视频放入视频/中,将其他忽略的文件放入其他/中

相关内容