我的Mac硬盘上有两个文件夹。
目录A和目录B
两个目录都包含图像文件。
我需要找到匹配的文件名是Dir A.
如果我发现匹配用Dir B中匹配的文件覆盖Dir A中的文件。
我该如何处理?
答案 0 :(得分:5)
rsync是用于同步文件的 最佳工具。它有很多选项,所以一定要详细阅读手册页。
rsync -rv --inplace --existing /path/to/dir/b/* /path/to/dir/a
如果你想编写一个脚本,那么这应该是你想要的:
#!/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
它的作用是,在目录B中查找文件并提取文件名(因为我们使用绝对路径)。它检查该文件名以查看它是否存在于目录A中。-e
是执行该操作的测试。如果测试成功,我们会打印一条消息,说明Match found
以及文件名。然后,我们继续将文件从目录B复制到目录A.
现在,您可以选择删除打印到屏幕上的消息,如果您不希望副本存在于目录B中,请使用mv
代替cp
。