我想在 Linux 控制台中使用 rsync 时将文件从一个目录(文件夹“test2”)复制到另一个目录(文件夹“Destination”)。唯一的问题?我想从主文件夹(“test2”)复制所有 .png 和 .jpg 文件,同时排除/跳过包含 .png 或 .jpg 文件以及 .jpg 或子文件夹中的 .png 文件。
我制作了一个运行但不成功的 bash 脚本,因为它将所有文件从我的源文件夹复制到我的目标文件夹。
#!/bin/bash
#Define pathways to source and destination folder
source_folder="/home/Minja/Desktop/Test2/"
destination_folder="/home/Minja/Desktop/Destination/"
#Name of excluded subfolder
excluded_directory="abcd"
#Use of rsync with defined options
rsync -av --include="*/" --include="*.jpg" --include="*.png" \
--exclude="*" "$source_folder" "$destination_folder"
#Manually exclude/include files from excluded directory
rsync -av --exclude="*" --include="*.jpg" --include="*.png" \
"$source_folder/$excluded_directory/" "$destination_folder/$excluded_directory/"
您对如何解决这个问题有什么建议吗?如何同时包含子文件夹中的 .jpg 和 .png 文件?
听起来您想避免从子目录复制任何内容,而只需从顶层复制 PNG 和 JPG 文件。但是,您的最后一句话似乎与此要求相矛盾。
假设您的问题的第一部分是正确的,请禁用递归复制(
-r
,由 暗示-a
):如果 shell 有太多文件无法使用
*.png
和进行枚举*.jpg
,请重新启用递归复制,但排除所有子目录:在这两种情况下,
--dry-run
当您看到它rsync
会执行您希望它执行的操作时,请将其删除,然后它将继续并真正执行复制。