Ken*_*nce 0 filesystems macos bash shell
我的Mac硬盘上有两个文件夹.
目录A和目录B.
两个目录都包含图像文件.
我需要找到匹配的文件名是Dir A.
如果我发现匹配覆盖Dir A中的文件与Dir B中匹配的文件.
我该怎么做呢?
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中存在该副本.