我已经离开脚本很多年了,所以我想知道是否有人可以在下面提供帮助。
我正在从 Google Photos 迁移到 Amazon Photos(大约 40k 张照片)。以下是我从 Google 下载的示例:
IMG-20180601-WA0004-modifié.jpg
IMG-20180601-WA0004.jpg
IMG-20180601-WA0004.jpg.json
IMG-20180601-WA0005-modifié.jpg
IMG-20180601-WA0005.jpg
IMG-20180601-WA0005.jpg.json
IMG-20180601-WA0008-modifié.jpg
IMG-20180601-WA0008.jpg
IMG-20180601-WA0008.jpg.json
IMG-20180601-WA0009-modifié.jpg
IMG-20180601-WA0009.jpg
IMG-20180601-WA0009.jpg.json
IMG-20180601-WA0010-modifié.jpg
IMG-20180601-WA0010.jpg
IMG-20180601-WA0010.jpg.json
IMG-20180601-WA0011-modifié.jpg
IMG-20180601-WA0011.jpg
IMG-20180601-WA0011.jpg.json
IMG-20180601-WA0013-modifié.jpg
IMG-20180601-WA0013.jpg
IMG-20180601-WA0013.jpg.json
IMG-20180601-WA0014-modifié.jpg
IMG-20180601-WA0014.jpg
IMG-20180601-WA0014.jpg.json
IMG-20180601-WA0015-modifié.jpg
IMG-20180601-WA0015.jpg
IMG-20180601-WA0015.jpg.json
IMG-20180601-WA0020.jpg
IMG-20180601-WA0020.jpg.json
IMG-20180601-WA0036-modifié.jpg
IMG-20180601-WA0036.jpg
IMG-20180601-WA0036.jpg.json
VID-20180601-WA0012.mp4.json
VID_20180601_195857.mp4.json
métadonnées.json
我想要以下内容:
- 搜索下载照片的主文件夹内的所有目录,
- 删除所有视频文件,如 mov、mp4、mpeg、mpg、avi、m4v 和 wmv(请注意,有时文件扩展名是大写的)
- 对于照片,您会注意到大多数文件名都是重复的(一个没有“modifié”一词,另一个则带有)。请注意,并非所有文件都有“修改”版本,例如 IMG-20180601-WA0020.jpg。我想删除文件名不包含“modifié”一词的所有照片,除非原始文件没有“modifié”版本,然后保留它(IMG-20180601-WA0020.jpg 是一个要保留的示例)。
- 我更喜欢保留 json 文件,如果它们与视频文件无关,否则删除它们。
答案1
删除所有视频文件可以通过以下方式完成
find . -type f \( -iname '*.mp4' -o -iname '*.mp4.json' \) -delete
-o -iname '*.suffix'
为您需要的其他后缀添加更多部分。
要删除原始图片以进行修改,请运行类似的命令
find . -name '*-modifié.jpg' -exec sh -c 'rm -f $(echo "$1" | sed s/-modifié//)' _ {} \;
这将找到任何带有未修改版本的文件-modifié
并删除其未修改版本(rm -f
如果没有未修改版本,则抑制错误消息)。
PS:我强烈建议在修改/运行这些命令之前进行备份,以防出现问题。
答案2
和zsh
:
zmodload zsh/files # for a builtin rm to avoid the "too many args" limit
# of the system one
set -o nocaseglob
echo rm -f -- **/*.(mp4|mpeg|mpg|mov|wmv|avi|m4v)(|.json)(N.)
echo rm -f -- **/*-modifié.jpg(N.e['reply=( ${REPLY%-*}.jpg(|.json)(N.) )'])
删除echo
s 即可实际执行此操作。