将 Dir1 中不存在的文件移动到 Dir2 中新的 Dir3

将 Dir1 中不存在的文件移动到 Dir2 中新的 Dir3

我有以下环境:

**DirA**
file1
file2
file3

**DirB**
file1
file2
file4

期望输出:

**DirC**
file4

我已经看到了使用 diff、sed 和 xargs 解决类似问题的解决方案,但我似乎无法让它运行。

diff -rq DirA >DirB | sed -n "s/^Only in \(folderA\): \(.*\)/'\1\/\2'/p" | xargs cp -vt DirC

问题是我正在使用绝对路径(因为 DirA 和 DirB 位于不同的磁盘上),我不知道如何相应地调整 sed commando。任何帮助都非常感谢。

答案1

我会采取稍微不同的方法(假设只有 dirA 和 dirB 中的文件 - 没有子目录,并且假设文件名称中没有特殊字符):

$ ls dir[ABC]
dirA:
file1  file2  file3

dirB:
file1  file2  file4

dirC:
$ ( cd dirA && for f in * ; do if [[ ! -f ../dirB/${f} ]] ; then echo mv -n -- "${f}" "../dirC/" ; fi ; done )
mv file3 ../dirC

相应地调整 dirA、dirB、dirC 的路径,如果您对mv回显的命令感到满意,则再次运行该命令(无需回显)。

相关内容