用于更改照片文件夹层次的脚本

问题描述 投票:0回答:1

[我正在寻找一个脚本,以使用SSH从YYYY / MM / DD /到YYYY-MM-DD /的ssh快速更改Synology nas上的现有文件夹结构,因此嵌套在平面上,但很难找到一个或任何可能的示例我没有寻找正确的术语。

我确实开始使用exiftool并完成了每个项目的移动,但是该集合已经很老了。

例如,当前位于例如2020/01/01 / images01.jpg的image01需要移至2020-01-01 / images.jpg

图像和视频文件当前仅位于日间文件夹中。

bash ssh synology
1个回答
0
投票

例如,您可以使用以下命令执行此操作:

find . -mindepth 3 -type d |awk -F"/" 'system("mv " $2"/"$3"/"$4" "$2"-"$3"-"$4" && rmdir "$2"/"$3" && rmdir "$2" 2>/dev/null")'

示例输入文件夹结构:

./2020/06/12/img1.jpg
./2020/06/12/file2.mpg
./2020/05/10/img2.jpg
./2020/05/10/img1.jpg

结果:

./2020-05-10/img1.jpg
./2020-05-10/img2.jpg
./2020-06-12/img1.jpg
./2020-06-12/file2.mpg

说明:

找 。在当前目录中搜索-mindepth 3仅在3级嵌套中搜索-d型仅搜索目录|创建管道,将查找结果定向到AWK-F“ /”将AWK字段分隔符设置为/每行执行系统命令,该命令将文件传输到新目录并删除不必要的旧目录&&仅在前一个命令成功时才执行下一个命令2> / dev / null将stderr指向void,这样您在尝试删除非空的“ year”目录时不会看到任何错误

您不能使用rm -rf,因为year目录可能仍然包含其他目录,因此使用rmdir两次。

您可以通过删除年份的目录是否为空来更好地解决stderr重定向,我不会进行此测试,以免混淆不必要的行动概念。

© www.soinside.com 2019 - 2024. All rights reserved.