在两个文件夹之间查找和替换图像文件

Ken*_*nce 0 filesystems macos bash shell

我的Mac硬盘上有两个文件夹.

目录A和目录B.

两个目录都包含图像文件.

我需要找到匹配的文件名是Dir A.

如果我发现匹配覆盖Dir A中的文件与Dir B中匹配的文件.

我该怎么做呢?

jay*_*ngh 5

rsync的文件同步最佳工具.它有很多选项,所以一定要详细阅读手册页.

rsync -rv --inplace --existing /path/to/dir/b/* /path/to/dir/a
Run Code Online (Sandbox Code Playgroud)

如果你想写一个脚本,那么这应该做你想要的:

#!/bin/bash

DIR_A='/path/to/dir_a'
DIR_B='/path/to/dir_b'

for file in "$DIR_B"/*; do 
    name="${file##*/}" 
    if [[ -e $DIR_A/$name ]]; then 
        echo "Match found = $name"; 
        cp "$file" "$DIR_A" 
    fi
done
Run Code Online (Sandbox Code Playgroud)

它的作用是,在目录B中查找文件并提取文件名(因为我们使用绝对路径).它检查该文件名以查看它是否存在于目录A中.-e是执行该操作的测试.如果测试成功,我们会打印一条消息Match found,说明文件名.然后,我们继续将文件从目录B复制到目录A.

现在,您可以选择删除打印到屏幕的消息,mv而不是使用,而不是cp如果您不希望目录B中存在该副本.